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()