从目标目录开始的Zip文件和目录

2024-09-30 22:11:50 发布

您现在位置:Python中文网/ 问答频道 /正文

脚本的工作目录如下所示:

my_script.py
random/
      |_ system/
                |_ folder/
                |         |_ fileA
                |_ fileB
                |_ fileC

我想压缩system及其所有子目录和文件,这样最终结果应该如下所示:

^{pr2}$

我的解决方案(下面)的问题是在输出zip中包含目录random。换句话说,生成的zip树从my_script.py的位置开始。在

^{3}$

这是我代码的(有缺陷的)输出:

output.zip
          |_random/
                   |_system/
                            |_ folder/
                            |        |_ fileA
                            |_ fileB
                            |_ fileC

在不移动任何目录/文件的情况下,如何获得所需的输出?如何排除脚本和目标目录之间的目录?


Tags: 文件py目录脚本myscriptrandomfolder
1条回答
网友
1楼 · 发布于 2024-09-30 22:11:50

这是一个简单的问题,改变您的工作目录。调用脚本时,请确保其中有一个os.chdir()语句。然后,当您执行os.walk()操作时,您将传入system,而不是传入{}。以下措施应该有效:

import os
import zipfile

os.chdir('random')
target = 'system'

zip_file = zipfile.ZipFile('../output.zip', mode='w')

for root, dirs, files in os.walk(target):
    zip_file.write(root)
    for file in files:
        zip_file.write(root + '/' + file)

zip_file.close()

作为样式问题,您应该在with中执行文件I/O,如下所示:

^{pr2}$

相关问题 更多 >