ZipFile 将所有父目录放入新创建的 zip 文件中
ZipFile puts all parent directories inside newly created zip file
我想从 select 几个单独的文件创建一个压缩文件。到目前为止,这是我的代码:
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) 中创建了一个 zip 文件,但它创建的 zip 文件在文件上包含 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()
我想从 select 几个单独的文件创建一个压缩文件。到目前为止,这是我的代码:
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) 中创建了一个 zip 文件,但它创建的 zip 文件在文件上包含 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()