Python:创建一个包含所有以“quot;结尾的文件的zip文件;。json";在目录中
假设目录是/Home/Documents/Test\u files 我想创建一个以“.json”结尾的所有文件的zip文件,如果可能的话,删除这些文件,这样就只剩下zip文件了 到目前为止,我已经能够创建给定路径中所有文件的zip文件,但是当我使用行Python:创建一个包含所有以“quot;结尾的文件的zip文件;。json";在目录中,python,zip,Python,Zip,假设目录是/Home/Documents/Test\u files 我想创建一个以“.json”结尾的所有文件的zip文件,如果可能的话,删除这些文件,这样就只剩下zip文件了 到目前为止,我已经能够创建给定路径中所有文件的zip文件,但是当我使用行zipf.write(file)时,它抛出错误“[Errno 2]没有这样的文件或目录:sample.json”。但是,当我使用zipf.write(os.path.join(root,file))时,它确实会写入文件,但也会写入我不想要的整个目录路
zipf.write(file)
时,它抛出错误“[Errno 2]没有这样的文件或目录:sample.json”。但是,当我使用zipf.write(os.path.join(root,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)
我还想在创建zip文件后删除/删除这些文件以节省空间
任何关于为什么会发生这种情况的帮助都将不胜感激 您可以在将其添加到zip文件之前使用
chdir
,以不包括整个目录路径,然后使用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))
导入操作系统
从zipfile导入zipfile
def create_zip(路径,zipf):
#路径是目录地址(即/Home/Documents/Test\u文件)
对于os.walk(路径)中的根、目录和文件:
对于文件中的文件:
如果文件.endswith(“.json”):
打印文件
write(os.path.join(根,文件),arcname=file)
删除(os.path.join(根,文件))