Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:创建一个包含所有以“quot;结尾的文件的zip文件;。json";在目录中_Python_Zip - Fatal编程技术网

Python:创建一个包含所有以“quot;结尾的文件的zip文件;。json";在目录中

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))时,它确实会写入文件,但也会写入我不想要的整个目录路

假设目录是/Home/Documents/Test\u files

我想创建一个以“.json”结尾的所有文件的zip文件,如果可能的话,删除这些文件,这样就只剩下zip文件了

到目前为止,我已经能够创建给定路径中所有文件的zip文件,但是当我使用行
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(根,文件))