我正在尝试读取文件并生成所述文件的哈希值。在大多数情况下,这是顺利的。但是,有一些我无法处理的文件。例如:
file("c:\\windows\\system32\\nvvsvc.exe")
产生错误:IOError: [Errno 2] No such file or directory: 'c:\\windows\\system32\\nvvsvc.exe
同样,命令:
subprocess.check_output(r"dir c:\windows\system32\nvvsvc.exe", shell = True)
产生错误:
找不到文件
追踪(最近一次呼叫最后一次):
文件“< stdin>”,第1行,<模块>
文件“C:\ Python27 \ lib \ subprocess.py”,第544行,在check_output中
引发CalledProcessError(retcode,cmd,output = output)
subprocess.CalledProcessError:命令'dir c:\ windows \ system32 \ nvvsvc.exe'返回非零退出状态1
我尝试了很多变种,包括试图让cacls.exe承认那里有一个文件。但是,当我退出python实例(exit())并执行dir c:\windows\system32\nvvsvc.exe
时,它返回确实存在一个文件。
使用calc.exe的类似测试允许我查看它并在python内部对它进行哈希处理。
我正在运行Python 2.7。我试图用管理权限启动python(以命令提示符的管理员身份运行),但这并没有改变任何东西。从python内部运行到文件系统基本上假装python不存在该文件时,特权似乎有一些变化。
作为参考,相关文件的所有者(还有其他相似的文件)是系统,文件中的cacls允许从用户,管理员和系统中读取它。
答案 0 :(得分:1)
简单回答! (但不一定容易找到)关于IOError,这是因为你不需要转义反斜杠。
第二部分看起来像权限错误,如上面的评论所述。
答案 1 :(得分:0)
如果这是64位系统,请尝试:
subprocess.check_output(r"c:\windows\SysNative\nvvsvc.exe", shell = True)
这里的关键是“SysNative”