2012-04-09 52 views
1

我正在嘗試讀取文件並生成所述文件的哈希。大多數情況下,這一切都很順利。但是,有幾個文件我無法處理。例如:無法使用win32 dir命令和Python子進程查看文件

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時,似乎有一些特權改變。

作爲參考,有問題的文件的所有者(還有其他類似的)是系統,並且文件上的cacls允許從用戶,管理員和系統讀取它。

+3

聽起來像一個權限問題。你是從[提升提示](http://windows.microsoft.com/en-US/windows-vista/Command-Prompt-frequently-asked-questions)運行的嗎? – 2012-04-09 04:58:30

回答

1

簡單的答案! (但不一定很容易找到)關於IOError,這是因爲你不需要逃避反斜槓。

第二部分看起來像權限錯誤,正如上面的註釋中所述。

+0

在閱讀提問者的新輸入後進行編輯。 – 2012-04-09 05:14:55

+0

所以我試圖用原始格式化的字符串(因此,沒有雙轉義文件名)到相同的錯誤。 此外,我試圖與有沒有提升的命令提示符。它似乎沒有改變的東西。 – fantadisco 2012-04-09 05:33:00

+0

我知道這已經有一段時間了,因爲你發佈了這個,但是你看過[子流程的python文檔](http://docs.python.org/library/subprocess.html)嗎?他們談論這個錯誤,他們可能會引發一個關於該怎麼做的想法。 – 2012-04-17 21:17:00

0

如果是64位系統試試這個:

subprocess.check_output(r"c:\windows\SysNative\nvvsvc.exe", shell = True) 

的這裏關鍵是「SysNative」

相關問題