Python - 压缩目录

Python - Zipping a directory

此代码当前在执行 Python 脚本的同一目标上创建一个 zip 文件,并尝试使用 "Documents and Settings\Owner" 上的内容填充该 zip 文件。但是,它一直试图跨 ntuser.dat 和 NTUSER.dat 进行复制,这给了我一个错误:[Errno 13] Permission denied: 'C:\Documents and Settings\Owner\NTUSER.DAT'

如何跳过这两个文件以允许压缩过程继续?我试图确定是否正在尝试复制 ntuser 文件,只是忽略了错误,但没有任何效果。

import os, zipfile, getpass

try:
    user= getpass.getuser()
    zf = zipfile.ZipFile(user + ".zip", "w", zipfile.ZIP_DEFLATED)
    directory = "C:\Documents and Settings\Owner"
    for dirname, subdirs, files in os.walk(directory):
        zf.write(dirname)
        for filename in files:
            if "NTUSER" in filename:
                pass
            zf.write(os.path.join(dirname, filename))
except IOError as e:
    print e
    pass
zf.close()

当您找到匹配文件时,您的代码不会执行任何操作:

for filename in files:
    if "NTUSER" in filename:
        pass
    zf.write(os.path.join(dirname, filename))

pass是一个无操作语句。 Python 将继续到下一行,将文件写入 ZIP。

如果您想跳过这些文件,请改用 continue

for filename in files:
    if "NTUSER" in filename:
        continue
    zf.write(os.path.join(dirname, filename))

这告诉 Python 跳过循环体的其余部分并转到下一次迭代,从而跳过 zf.write() 调用。

pass 语句仅在 Python 语法 要求 有一行的地方有用。例如,如果您想忽略一个特定的异常,您可以这样写:

try:
    # code that can raise an exception
except SpecificException:
    pass

因为你必须在except块中写东西pass 非常适合 'something'。