2009-06-18 34 views
1

我工作的一些代碼是應該到我的系統上運行的文件夾內的exe文件,並得到一個錯誤說...Windows錯誤和Python

WindowsError:[錯誤3]系統找不到指定的路徑。 這裏有點代碼:

exepath = os.path.join(EXE file localtion) 
exepath = '"' + os.path.normpath(exepath) + '"' 
cmd = [exepath, '-el', str(el), '-n', str(z)] 

print 'The python program is running this command:' 
print cmd 

process = Popen(cmd, stderr=STDOUT, stdout=PIPE) 
outputstring = process.communicate()[0] 

我已導入子,也從子進口*

例如,這是我的exe文件的位置看起來像在我展示這些代碼的第一行:

exepath= os.path.join('/Program Files','next folder','next folder','blah.exe') 

我錯過了什麼嗎?

+1

如果執行打開(exepath),它提高IO錯誤(表明該文件無法訪問)? – 2009-06-18 15:33:06

回答

3

您需要正確轉義的可執行文件的路徑

+0

轉義空格? – Tyler 2009-06-18 15:26:50

+0

是的,逃離空間。另外,在那裏做的「/」是什麼?不Windows使用「\」?一般來說,不要使用「程序文件」或「我的文檔」做任何事情,而且你會更快樂。 – 2009-06-18 15:37:57

+0

/在Windows上的系統調用中工作得很好,即使在真實的DOS中也是如此。 – 2009-06-18 15:44:44

0

如果我沒有記錯,您不需要引用可執行文件路徑,就像在第二行中那樣。

編輯:好的,只是抓住附近的窗口框,並測試了這一點。無論路徑是否被引用,Popen的工作原理都是一樣的。所以這不是問題。

+0

只是把上面的代碼拿掉了引號,它說'blah'沒有在我的示例中定義 – Tyler 2009-06-18 15:28:22

0

AFAIK的空間,也沒有必要,除非cmd.exe參與運行的程序來包圍引號的路徑。

此外,您可能希望使用環境變量ProgramFiles來查找'程序文件'的實際位置,因爲這取決於區域設置,也可以使用TweakUI進行調整。

1

除了正確轉義可能導致問題的空格和其他字符(如/)之外,還可以使用8個字符的舊DOS路徑。

例如,程序文件將是:

PROGRA〜1,確保追加〜1的最後兩個字符。

編輯:你可以添加一個r到字符串的前面,使它成爲一個原始文字。 Python會讀取字符的字符串。就像這樣:

R 「\ Program Files文件」