Python:创建一个目录中所有以“.json”结尾的文件的zip文件
Python: Create a zip file of all files ending with ".json" in a directory
假设目录是 /Home/Documents/Test_files。
我想为所有以“.json”结尾的文件创建一个 zip 文件,如果可能,删除这些文件,只留下 zip 文件
到目前为止,我已经能够为给定路径中的所有文件创建一个 zip 文件,但是当我使用行 zipf.write(file)
时,它会抛出错误“[Errno 2] 没有这样的文件或目录: sample.json”。但是,当我使用 zipf.write(os.path.join(root, file))
时,它确实会写入文件,但也会写入我不想要的整个目录路径。
我只想自己写文件。当我使用 print file
时,似乎打印了正确的文件,所以我不知道为什么我收到文件不存在的错误消息
目前我的代码是这样的:
def create_zip(path,zipf):
#path is the directory address (i.e. /Home/Documents/Test_files)
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".json"):
print file
zipf.write(os.path.join(root, file))
#zipf.write(file)
我也想remove/delete创建zip文件后的文件保存space。
任何关于为什么会发生这种情况的帮助将不胜感激!
您可以 chdir
在将其添加到 zip 文件之前不包括整个目录路径,然后使用 os.remove
删除文件:
def create_zip(path,zipf):
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".json"):
chdir(root)
zipf.write(file)
os.remove(file)
如果您正在使用 Python 的 ZipFile 模块,您只需指定参数
arcname = archive name
在 write() 方法中,如:
import os
from zipfile import ZipFile
def create_zip(path,zipf):
#path is the directory address (i.e. /Home/Documents/Test_files)
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".json"):
print file
zipf.write(os.path.join(root, file), arcname=file)
os.remove(os.path.join(root, file))
假设目录是 /Home/Documents/Test_files。
我想为所有以“.json”结尾的文件创建一个 zip 文件,如果可能,删除这些文件,只留下 zip 文件
到目前为止,我已经能够为给定路径中的所有文件创建一个 zip 文件,但是当我使用行 zipf.write(file)
时,它会抛出错误“[Errno 2] 没有这样的文件或目录: sample.json”。但是,当我使用 zipf.write(os.path.join(root, file))
时,它确实会写入文件,但也会写入我不想要的整个目录路径。
我只想自己写文件。当我使用 print file
时,似乎打印了正确的文件,所以我不知道为什么我收到文件不存在的错误消息
目前我的代码是这样的:
def create_zip(path,zipf):
#path is the directory address (i.e. /Home/Documents/Test_files)
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".json"):
print file
zipf.write(os.path.join(root, file))
#zipf.write(file)
我也想remove/delete创建zip文件后的文件保存space。
任何关于为什么会发生这种情况的帮助将不胜感激!
您可以 chdir
在将其添加到 zip 文件之前不包括整个目录路径,然后使用 os.remove
删除文件:
def create_zip(path,zipf):
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".json"):
chdir(root)
zipf.write(file)
os.remove(file)
如果您正在使用 Python 的 ZipFile 模块,您只需指定参数
arcname = archive name
在 write() 方法中,如:
import os from zipfile import ZipFile def create_zip(path,zipf): #path is the directory address (i.e. /Home/Documents/Test_files) for root, dirs, files in os.walk(path): for file in files: if file.endswith(".json"): print file zipf.write(os.path.join(root, file), arcname=file) os.remove(os.path.join(root, file))