![](/img/trans.png)
[英]Zip file created with python zipfile library is not accessible after calling zipfile.close()
[英]ZipFile puts all parent directories inside newly created zip file
我想从几个单独的文件中创建一个 zipfile。 到目前为止,这是我的代码:
from zipfile import ZipFile
from os import walk
name = 'Mia'
allFiles = next(walk("C:\\Users\\jack_l\\Documents\\Image-Line\\FL Studio\\Projects\\finished\\UPLOAD"), (None, None, []))[2]
allStemFiles = []
for counter in range(len(allFiles)):
if str('STEMS - '+name) in allFiles[counter]:
allStemFiles.append(allFiles[counter])
myZipFile = ZipFile(r'C:\Users\jack_l\Documents\Image-Line\FL Studio\Projects\finished\UPLOAD\beatTitle.zip', 'w')
for counter in range(len(allStemFiles)):
myZipFile.write('C:\\Users\\jack_l\\Documents\\Image-Line\\FL Studio\\Projects\\finished\\UPLOAD\\'+allStemFiles[counter])
myZipFile.close()
我的问题是它确实在正确的目录(C:..../UPLOAD)中创建了一个 zipfile,但它创建的 zipfile 在文件上包含 8 层文件夹。 就像 zip 文件包含一个名为 Users 的文件夹,其中包含一个名为 jack_l 的文件夹,依此类推,直到一个名为 UPLOAD 的文件夹包含我的文件。
我试图通过写来解决这个问题:
myZipFile.write(allStemFiles[counter])
代替:
myZipFile.write('C:\\Users\\jack_l\\Documents\\Image-Line\\FL Studio\\Projects\\finished\\UPLOAD\\'+allStemFiles[counter])
任何帮助将不胜感激。 只是为了重新迭代; 我想要一个只包含文件的压缩文件(没有任何文件夹)。 谢谢你。
您可以将工作目录更改为首先要归档的文件的基本目录,以便所有路径都相对于基本目录:
from zipfile import ZipFile
import os
name = 'Mia'
os.chdir("C:\\Users\\jack_l\\Documents\\Image-Line\\FL Studio\\Projects\\finished\\UPLOAD")
allFiles = next(os.walk("."), (None, None, []))[2]
allStemFiles = []
for counter in range(len(allFiles)):
if str('STEMS - '+name) in allFiles[counter]:
allStemFiles.append(allFiles[counter])
myZipFile = ZipFile('beatTitle.zip', 'w')
for counter in range(len(allStemFiles)):
myZipFile.write(allStemFiles[counter])
myZipFile.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.