为什么这个代码没有备份/ ZIP目录?

时间:2017-09-10 12:15:00

标签: python zipfile

我正在制作ZIP文件的程序。在这种情况下,我试图ZIP目录,其中包含一个子目录。如果程序必须ZIP目录,我使用以下函数,但它不是ZIP子目录,它只是从子目录中获取文件并将它们与其他所有文件放在一起。

zipper = zipfile.ZipFile(systemDate + ".zip", "w")

def zipdir(path, ziph):
    logging.info("ZIP function has been called.")
    for root, dirs, files in os.walk(path):
        for file in files:
            fileNom = os.path.join(root, file)
            print("file nom: " + fileNom)
            zipper.write(fileNom, basename(fileNom))

感谢。

1 个答案:

答案 0 :(得分:4)

ZipFile.write的第二个参数是存档名称,即存档中文件的文件名。由于ZIP文件本身不包含任何文件夹信息, 就是必须去的地方。因此,为了将文件放在子目录中,您必须调整arcname以包含目录名。

您可以使用os.path.relpath来计算相对于path的路径,该路径似乎是ZIP文件的根目录:

zipper.write(fileNom, os.path.relpath(fileNom, path))