Python 为什么这段代码不备份/ZIP目录?

Python 为什么这段代码不备份/ZIP目录?,python,zipfile,Python,Zipfile,我正在制作一个压缩文件的程序。在这个场景中,我试图压缩一个目录,其中包含一个子目录。如果程序必须压缩一个目录,但它不压缩子目录,我将使用下面的函数,它只从子目录中获取文件并将其与所有其他文件放在一起 zipper = zipfile.ZipFile(systemDate + ".zip", "w") def zipdir(path, ziph): logging.info("ZIP function has been called.") for root, dirs, file

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

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))
谢谢。

ZipFile.write的第二个参数是归档文件名,即归档文件中的文件名。由于ZIP文件本身不包含任何文件夹信息,因此必须这样做。因此,为了将文件放入子目录中,必须调整arcname以包含目录名

您可以使用计算相对于路径的路径,该路径似乎是ZIP文件的根:

zipper.write(fileNom, os.path.relpath(fileNom, path))
ZipFile.write的第二个参数是归档文件名,即归档文件中的文件名。由于ZIP文件本身不包含任何文件夹信息,因此必须这样做。因此,为了将文件放入子目录中,必须调整arcname以包含目录名

您可以使用计算相对于路径的路径,该路径似乎是ZIP文件的根:

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

你必须提供更多的上下文。程序的其余部分是什么样子的?这个函数是程序中唯一处理目录压缩的部分,我不认为程序的其余部分是有益的。谢谢你的回答。你得多讲点背景。程序的其余部分是什么样子的?这个函数是程序中唯一处理目录压缩的部分,我不认为程序的其余部分是有益的。谢谢你的回复。我试试看,谢谢。我要试一试。