繁体   English   中英

Python:压缩目录中的所有文件夹

[英]Python: zip all folders in directory

如果我知道目录的路径,我该如何单独压缩其中的所有文件夹? 我尝试了一些东西,但由于我不完全了解os模块是如何工作的,所以我无能为力。

import os, zipfile

directory_path = str(raw_input())
for folder in os.listdir(directory_path):
    zip_file = zipfile.ZipFile(folder + '.zip', 'w')
    for root, dirs, files in os.walk(directory_path+'/'+folder):
        for file in files:
            zip_file.write(os.path.join(root, file),file)
    zip_file.close()

问题是它只从目录中拉出一个文件夹。

例:

Directory
 |
 +-- folder1
 |  |  
 |  \-- file 1.1
 |
 +-- folder2
 |  |  
 |  \-- file 2.1
 |    
 +-- folder3
 |  |  
 |  +-- file 3.1
 |  \-- file 3.2

我想得到的是folder1.zip(包含文件1.1),folder2.zip(包含文件2.1)和folder2.zip(包含文件3.1和文件3.2)

任何帮助表示赞赏。

我认为问题在于您为zip存档中的每个文件指定了不同的arcnamewrite方法的第二个参数)。 尝试以下(我也替换了一些代码,如使用os.path模块而不是字符串连接加入的路径):

import os
import zipfile

path = raw_input('Enter the directory: ')
path = os.path.abspath(os.path.normpath(os.path.expanduser(path)))
for folder in os.listdir(path):
    zipf = zipfile.ZipFile('{0}.zip'.format(os.path.join(path, folder)), 'w', zipfile.ZIP_DEFLATED)
    for root, dirs, files in os.walk(os.path.join(path, folder)):
        for filename in files:
            zipf.write(os.path.abspath(os.path.join(root, filename)), arcname=filename)
    zipf.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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