ZIp 只有目录的内容,不包括父目录
回答问题 我正在尝试压缩目录的内容,而不压缩目录本身,但是我找不到明显的方法来做到这一点,而且我对 python 非常陌生,所以它对我来说基本上是德语。这是我正在使用的代码,它成功地包含了父级以及内容: #!/usr/bin/env python import os import zipfile def zipdir(path, ziph): # ziph is zipfile handle fo
·
回答问题
我正在尝试压缩目录的内容,而不压缩目录本身,但是我找不到明显的方法来做到这一点,而且我对 python 非常陌生,所以它对我来说基本上是德语。这是我正在使用的代码,它成功地包含了父级以及内容:
#!/usr/bin/env python
import os
import zipfile
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))
if __name__ == '__main__':
zipf = zipfile.ZipFile('Testing.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('android', zipf)
zipf.close()
我试过修改它,但总是以难以理解的错误告终。
Answers
写有第二个参数 - 存档中的名称,即。
ziph.write(os.path.join(root, file), file)
编辑:
#!/usr/bin/env python
import os
import zipfile
def zipdir(path, ziph):
length = len(path)
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
folder = root[length:] # path without "parent"
for file in files:
ziph.write(os.path.join(root, file), os.path.join(folder, file))
if __name__ == '__main__':
zipf = zipfile.ZipFile('Testing.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('android', zipf)
zipf.close()
Pathlib
解决方案
from pathlib import Path
def zipdir(parent_dir : str , ziph : ZipFile) -> None:
for file in Path(parent_dir).rglob('*'): # gets all child items
ziph.write(file, file.name)
更多推荐
已为社区贡献126475条内容
所有评论(0)