2015-04-17 96 views
2

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

如何跳过这两个文件以允许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() 

回答

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()电话。

A pass语句仅在Python语法需要的地方有一行。例如,如果你想忽略一个特定的异常,你会写:

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

,因为你必须写东西except块; pass很适合这个'东西'。

+0

非常感谢!这就是所需要的! 但是,现在该操作似乎没有结束,并且zip文件不再打开。你有什么想法,为什么现在会发生? –

+0

我尝试打开zip文件夹现在导致explorer.exe没有响应。我是否没有给过程足够的时间来完成,或者是错的? –