我编写了一个简单、粗略的程序,可以自动压缩当前工作目录中的所有内容。它在Linux上运行得很好,但在Windows上运行时存在很大的问题。
这是我的代码:
import os, zipfile
zip = zipfile.ZipFile('zipped.zip', 'w') #Create a zip file
zip.close()
zip = zipfile.ZipFile('zipped.zip', 'a') #Make zip file append instead of overwriting
for dir, subdir, file in os.walk(os.path.relpath('.')): #Loop for walking thru the directory
for subdirectory in subdir:
subdirs = os.path.join(dir, subdirectory)
zip.write(subdirs, compress_type=zipfile.ZIP_DEFLATED)
for files in file:
fil = os.path.join(dir, files)
zip.write(fil, compress_type=zipfile.ZIP_DEFLATED)
zip.close()
当我在Windows上运行它时,它不会停止压缩,而是无限地在压缩文件中创建“zipped.zip”文件,让它运行几秒钟后,生成几百MB的文件。在 Linux 上,程序将在压缩除新创建的 zipped.zip 之外的所有文件后停止。
Screenshot: A "zipped.zip" inside the "zipped.zip"
我想知道我是否错过了一些可以使其在 Windows 上正常运行的代码?
最佳答案
我会将文件夹压缩到临时 zip 文件中,然后将临时 zip 文件移动到该文件夹中。
关于Windows 上的 Python zip 文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45085419/