【发布时间】:2015-12-08 10:11:23
【问题描述】:
如果我知道目录的路径,如何单独压缩其中的所有文件夹?我尝试了一些东西,但由于我不完全了解 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_file.write(os.path.join(root, file),file)防止创建额外的目录。 -
@Mahesh 我确实有多个文件夹。谢谢,它现在可以正确压缩,但它仍然只压缩目录中的一个文件夹。
-
您能否提供输入目录和所需输出的示例?
-
@DanielePantaleone 我添加了一个例子,希望这就是你的意思。
-
你能提供
r正则表达式的定义吗?
标签: python python-2.7 zip