2013-07-20 83 views
1

我试着去创建一个文件夹的内容的zip文件使用的代码belllow(一些目录和文件):创建从一个目录中的zip文件,而不是他的FULLPATH

import zip,os 

path = "c:\\tester\\folderToZip" 
zip = zipfile.ZipFile("zippedFolder.zip", "w") 
for root, dirs, files in os.walk(path): 
    for file in files: 
     zip.write(os.path.join(root, file)) 
zip.close() 

但代码运行后,当我检查压缩文件,压缩文件,而不是具有文件夹“folderToZip”(例如:f1,f2,f2,a.txt,b.txt,c.txt)的内容时,它具有完整路径可变路径。

所以,问题是,我如何创建一个基于文件夹内容的zipfile,但不是他的完整路径?

回答

2

write需要第二个可选参数arcname,指定时将提供所存储文件的名称。用它来指定你想要的名字。

如果你只想要的文件名:

import zip,os 

path = "c:\\tester\\folderToZip" 
zip = zipfile.ZipFile("zippedFolder.zip", "w") 
for root, dirs, files in os.walk(path): 
    for file in files: 
     filename = os.path.join(root, file) 
     zip.write(filename, filename) 
zip.close() 
+0

嗨,你能给我怎么会用一个例子? –

+0

'zip.write(os.path.join(root,file),file)'可能是你之后的@Thales –

+0

@mata嗨,它以某种方式工作,但它添加了目录中的所有文件,但忽略了目录结构。所以,而不是添加c:\ tester \ folderToZip \ f1 \ f2 \ f1f2.txt,它将f1f2.txt添加到邮政编码 –

相关问题