繁体   English   中英

关于 Python 脚本中 zip 文件路径的问题

[英]Issue about the zip file path in Python Script

我正在使用以下代码片段从特定目录压缩文件,但是,当我在 targetPath 解压缩文件时,它会创建另一个具有以下结构的文件夹路径:

/u01/backup/u01/data/abc/xyz/logs.

可以在脚本中进行哪些更改以使文件夹路径为:

/u01/备份/日志

,当我解压缩它。

#!/usr/bin/env python
import os
import sys
import zipfile
import datetime
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))
Time = datetime.datetime.now().strftime('%d-%b-%Y')
sourcePath = '/u01/data/abc/xyz/logs'
targetPath = '/u01/backup/'
fname = targetPath + 'backup-'+ str(Time)+'.zip'
if __name__ == '__main__':
    zipf = zipfile.ZipFile(fname, 'w', zipfile.ZIP_DEFLATED)
    zipdir(sourcePath, zipf)
    zipf.close()
sys.exit()

您可以使用ZipFile.write的重载函数来指定 zip 中的名称:

请参阅https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.write

ZipFile.write(filename, arcname =None, compress_type=None, compresslevel=None)

将名为 filename 的文件写入存档,为其指定存档名称arcname (默认情况下,这将与 filename 相同,但没有驱动器号并删除前导路径分隔符)。 [...]

所以

 ziph.write(os.path.join(root, file), os.path.join('/u01/backup/logs',file) )

应该将您的文件放入 zip 内更合适的文件夹中 - 如果您想保留原始路径的一部分,您需要将该部分作为要写入的第二个参数提供。

您可以使用 os.path.split / join 来修改文件名 - 请参阅https://docs.python.org/3.8/library/os.path.html

暂无
暂无

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

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