我正在尝试读入一个文件并生成该文件的哈希值。在大多数情况下,这一切进展顺利。但是,有一些文件我无法处理。例如:
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)
产生错误:
File Not Found
Traceback (most recent call last):
File "< stdin >", line 1, in < module >
File "C:\Python27\lib\subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'dir c:\windows\system32\nvvsvc.exe' returned non-zero exit status 1
我尝试了许多变体,包括尝试让 cacls.exe 承认那里有一个文件。但是,当我退出 python 实例 (exit()) 并执行 dir c:\windows\system32\nvvsvc.exe
,它返回那里确实有一个文件。
使用 calc.exe 进行的类似测试允许我从 python 内部查看它并对其进行哈希处理。
我正在运行 Python 2.7。我尝试使用管理权限启动 python(在命令提示符下以管理员身份运行),但这并没有改变任何东西。从 python 内部运行时,权限似乎发生了一些变化,以至于文件系统本质上假装该文件对于 python 来说不存在。
仅供引用,相关文件的所有者(还有其他类似文件)是系统,文件上的 cacl 允许从用户、管理员和系统读取该文件。
最佳答案
简单的回答! (但不一定容易找到)关于IOError,是因为不需要转义反斜杠。
第二部分看起来像权限错误,如上面的评论中所述。
关于python - 无法使用 win32 dir 命令和 Python 子进程查看文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10069009/