繁体   English   中英

ZipFile 将所有父目录放入新创建的 zip 文件中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM