使用Zipfile创建存档

时间:2017-01-02 16:41:55

标签: python

这个帖子已经部分回答了这个问题: How to create a zip archive of a directory 但是,我想澄清一下,因为它与问题没有直接关系,我在这里问。我是python的新手,并且一直在吸收关于这个主题的各种文本,并且通过这里的答案尽可能彻底地查看,但我甚至不确定如何提出这个问题。

当我调用函数zipdir()时,我必须添加参数。 'path'参数很简单,但我不知道要放什么作为 ziph 参数?我甚至不确定它在寻找什么

runas /savecred /noprofile /user:<USER>

2 个答案:

答案 0 :(得分:1)

正如您所说的路径很简单,它要压缩到zip文件中的目录与ziph一样,目标文件最终将包含所提供目录路径中的所有文件。为了更清楚,我复制了ipython控制台中关于zipfile的解释.ZipFile:

Init签名:zipfile.ZipFile(文件,模式=&#39; r&#39;,压缩= 0,allowZip64 = True) 文档字符串: 具有打开,读取,写入,关闭,列出zip文件的方法的类。

z = ZipFile(文件,模式=&#34; r&#34;,压缩= ZIP_STORED,allowZip64 = True)

file:文件的路径或类文件对象。       如果是路径,则ZipFile将打开和关闭该文件。 模式:该模式可以是“读取”,“写入”,“独占创建”,“&#39;”,       或追加&#39; a。 压缩:ZIP_STORED(无压缩),ZIP_DEFLATED(需要zlib),              ZIP_BZIP2(需要bz2)或ZIP_LZMA(需要lzma)。 allowZip64:如果True ZipFile将创建具有ZIP64扩展名的文件             需要,否则会在此情况下引发异常             是必要的。

我认为这更容易理解。

答案 1 :(得分:1)

一个更简单的例子可以帮助您了解正在发生的事情。

import os
import zipfile

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

zipf = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('.', zipf)
zipf.close()

上面的代码会压缩当前目录中的文件,并创建包含已归档文件的zipfile Python.zip

ziph是您将zipf传递给zipfile并将其写入的参数。

在您的示例中,您可能想要这样:

import os
import zipfile
import time
toDirectory = ".\\Py\Backup"
fileName = int(time.time())

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

zipf = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('tmp/', zipf)
zipf.close()
os.renames('Python.zip', str(fileName) + ".zip")