Zipfile 不写入数据

Zipfile not writing data

我尝试压缩我创建的日志文件,但没有写入任何内容! 代码:

    def del_files():
        '''Adapted from answer @  by jterrace'''
        dir_to_search = os.path.join(os.getcwd(),'log')
        for dirpath, dirnames, filenames in os.walk(dir_to_search):
            for file in filenames:
                curpath = os.path.join(dirpath, file)
                log(curpath)
                if curpath != path:
                    log("Archiving old log files...")
                    with zipfile.ZipFile("log_old.zip", "w") as ZipFile:
                        ZipFile.write(curpath)
                        ZipFile.close()
                        log("archived")

首先,您将在每次迭代时覆盖输出 zip 文件:

with zipfile.ZipFile("log_old.zip", "w") as ZipFile:

mode "w"表示创建一个新文件,或者截断一个现有文件。可能您的意思是追加到 zip 文件,在这种情况下,可以使用模式 "a" 打开它进行追加。或者您可以在外部 for 循环之外打开 zip 文件。

您的代码应导致 log_old.zip 包含一个文件 - os.walk() 找到的最后一个文件。

在主循环之外打开存档更好,因为文件只会打开一次,并且会因为上下文管理器而自动关闭 (with):

with zipfile.ZipFile("log_old.zip", "w") as zf:
    dir_to_search = os.path.join(os.getcwd(), 'log')
    for dirpath, dirnames, filenames in os.walk(dir_to_search):
        for file in filenames:
            curpath = os.path.join(dirpath, file)
            zf.write(curpath)