【问题标题】:ioerror errno 13 permission denied: 'C:\\pagefile.sys'ioerror errno 13 权限被拒绝:'C:\\pagefile.sys'
【发布时间】:2016-07-21 10:17:52
【问题描述】:

下面是我的代码,我想要实现的是遍历操作系统,生成代码正常运行的每个文件的 MD5 哈希,但是,我收到标题中的错误“ioerror errno 13 permission denied: 'C: \pagefile.sys'" 当我尝试从 C:\ 运行文件时,有没有办法可以以管理员身份运行它?即使我以管理员身份运行 cmd 也不起作用,提前谢谢你。

import os, hashlib

current_dir = os.getcwd()
for root,dirs,files in os.walk(current_dir):
    for f in files:
        current_file = os.path.join(root,f)
        H = hashlib.md5()

        with open(current_file) as FIN:
            H.update(FIN.read())
            with open("gethashes.txt", "a") as myfile:
                myfile.write(current_file),myfile.write(",      "),myfile.write(H.hexdigest()),myfile.write("\n")

        print current_file, H.hexdigest()

【问题讨论】:

  • 如果文件不是locked : stackoverflow.com/questions/19672352/…
  • pagefile.sys 应该被跳过。即使您能够阅读它,内容也可能随时更改,并且生成的 md5 哈希值将不正确。
  • 补充@J.J.Hakala 所说的内容,甚至在您阅读时可能会发生变化。

标签: python os.walk


【解决方案1】:

如错误中所述 - 权限被拒绝 - 因为需要读取文件以获取其内容的 md5。总会有我们没有读权限的情况。

import os, hashlib

def md5_chk(current_file):
    try:
        md5 = ''
        err = ''
        H = hashlib.md5()
        with open(current_file) as FIN:
            H.update(FIN.read())
            md5 = H.hexdigest()
    except Exception, e:
        md5 = None
        err = str(e)
        print err
    return md5,err

if __name__ == '__main__':    
    current_dir = os.getcwd()
    for root,dirs,files in os.walk(current_dir):
        with open("G://gethashes.txt", "a") as myfile:
            for f in files:
                current_file = os.path.join(root,f)
                md5_val,err = md5_chk(current_file)
                if md5_val is not None:
                     myfile.write(current_file),myfile.write(",    "),myfile.write(md5_val),myfile.write("\n")
                     print current_file, md5_val
                else:
                     myfile.write(current_file),myfile.write(",    "),myfile.write("Error - " + str(err)),myfile.write("\n")
                     print current_file, str(err)

如果有用请告诉我。

【讨论】:

  • 运行此代码时出现以下错误:ValueError: I/O operation on closed file。但是,如果我将这一行 "with open("gethashes.txt", "a") as myfile:" 包括在内,我会进一步完成整个过程,但仍然收到错误:IOError: [Errno 13] Permission denied: 'C: \\启动\\BCD'
  • @dperrie - 更新了代码。请检查并告诉我
猜你喜欢
  • 2011-06-11
  • 2013-05-02
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多