Python 在代码中获取问题,该代码将压缩给定目录中的所有文件
我正在执行以下代码来压缩给定目录中的所有文件。如果我打开一个zip文件只是为了创建它,程序会不断地在zip上重击数据。问题在于以下陈述:Python 在代码中获取问题,该代码将压缩给定目录中的所有文件,python,Python,我正在执行以下代码来压缩给定目录中的所有文件。如果我打开一个zip文件只是为了创建它,程序会不断地在zip上重击数据。问题在于以下陈述: with ZipFile("Python_archive.zip", 'w') as newZip: pass 如果我将这两行放在If root==BaseDir条件中,程序运行良好。我看不出结果有什么不同。谁能解释一下吗 完整的程序: import os from zipfile import ZipFile BaseDir = r'F:\Stu
with ZipFile("Python_archive.zip", 'w') as newZip:
pass
如果我将这两行放在If root==BaseDir条件中,程序运行良好。我看不出结果有什么不同。谁能解释一下吗
完整的程序:
import os
from zipfile import ZipFile
BaseDir = r'F:\Study Notes\Python'
os.chdir(BaseDir)
with ZipFile("Python_archive.zip", 'w') as newZip:
pass
for root, dir, file in os.walk(BaseDir):
if root == BaseDir:
for f in file:
with ZipFile("Python_archive.zip", 'a') as newZip:
newZip.write(f)
print(f + " has been archived....")
对于BaseDir中的每个目录(包括BaseDir),os.walkBaseDir将生成当前控制器、目录列表和非目录文件 例如:'BaseDirPath'、['dir1'、['dir2']、['file1'、['file2']
with ZipFile("Python_archive.zip", 'a') as newZip:
newZip.write(f)
print(f + " has been archived....")
如果与条件if root==BaseDir:一起使用,上述代码将压缩BaseDir中非目录的所有文件。当您有多个目录并且每个目录包含一些其他文件时,下面的代码将出错
for root, dir, file in os.walk(BaseDir):
for f in file:
上面代码中的文件是一个文件名列表,请看上面的示例。您正在尝试遍历每个目录中的文件名列表,并将其压缩到当前文件夹中,但在当前文件夹中找不到文件名,这不应该起作用
这可以用shutil轻松完成
import shutil
shutil.make_archive('Python_archive', 'zip', BaseDir)
请更详细地描述一下哪里错了。