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'。
此代码当前在执行 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'。