此代码当前在执行Python脚本的同一目标上创建一个zip文件,并尝试使用“Documents and Settings \ Owner”中的内容填充zip。但是,它一直试图复制ntuser.dat和NTUSER.dat,这给了我一个错误:[Errno 13] Permission denied: 'C:\\Documents and Settings\\Owner\\NTUSER.DAT'
如何跳过这两个文件以允许zip进程继续?我试图确定是否正在尝试复制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()
答案 0 :(得分:3)
当您找到匹配的文件时,您的代码不会 :
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
适合那种'某些东西'很好。