2011-09-13 31 views
2

基本上我需要一个文件夹内的某一类型的所有文件复制到一个压缩文件在最高级别的Python - os.walk某些类型的文件到现有的ZipFile

例如(所以不是一个文件夹中)我有一个文件夹,'文件夹',并在该文件夹中是一个.png文件的负载。我想将所有这些文件复制到一个现有的ZipFile中。目前我只能拿到文件夹复制一样,所以我最终'ZipFile\A Folder\lots of .pngs',而不是'ZipFile\lots of .pngs'

我使用移动的文件和文件夹的代码是:

for root, dirs, files in os.walk('A Folder'): 
       for f in files: 
        fname = os.path.join(root, f) 
        myzip.write(fname) 

另一种快速的东西,如果我可以问另一个问题,你将如何去从ZipFile中删除一个文件夹?

希望这已经够清楚了,

非常感谢!

回答

2

根据Python文档中,zipfile.write()方法支持作为目的地名称(即在存档名称)第二个参数,尽量TTO使用它像这样:

for root, dirs, files in os.walk('A Folder'): 
    for f in files: 
     fname = os.path.join(root, f) 
     new_path = os.path.normpath(fname.replace('A Folder', '')) 
     myzip.write(fname, new_path) 
+0

这是梦幻般的,非常感谢!我没有意识到你可以将归档目的地归档,正是我所感谢的。唯一的问题是如果你再次运行它,它不覆盖文件,它只是增加了它的另一个副本,我会研究它。再次感谢 – Artharos

相关问题