2012-07-03 56 views
1

我有具有與輸入文件(inputs.prj)被調用的可執行(evapo.exe)運行可執行,一般我做使用Windows它命令通過只輸入C提示:\ myfiles的\ evapo輸入.PRJ(當然都位於myfiles的文件夾中的可執行文件和輸入文件)使用wexpect

現在我希望能夠做到使用python同樣的事情。在這裏上的其他類似的問題,建議使用wexpect因爲其他方法,如子不工作時,對其他信息的可執行askes運行(我的情況的信息被輸入文件)。我想:

import wexpect 

wexpect.run(r'c:\myfiles\evapo.exe') 

和python掛起......,請幫助我,如果任何人有一個想法,因爲我使用CMD它做我能如何結合的exe和輸入文件。

+0

如果你運行它「通過只輸入C:\ myfiles文件\ evapo inputs.prj」,然後可執行沒有按」 t「要求其他信息運行」,它從命令行參數中獲取所需的所有信息。但是你沒有傳達任何論點。在不知道什麼是蒸發的情況下不可能確定,但​​我敢打賭,在沒有任何爭論的情況下,它會讀取標準輸入,這就是爲什麼它會掛起。 – abarnert

回答

3

你不需要wexpect,如果你想傳遞的所有信息是一個文件名:

from subprocess import check_call 

check_call(r'c:\myfiles\evapo.exe inputs.prj') 
+0

這工作完美! –

0

我猜wexpect是Pexpect的的蟒蛇端口和行爲相似,但適用於Windows。

我檢查以下內容:http://www.jjoseph.org/files/led_calibration/wexpect.py

如果是這樣那麼任何對pexpect的例子應該工作的情況。

當您只想收集輸出時,應該使用run()命令。 當您想要交互並提供輸入時,這不起作用。

如果你想發送輸入,你需要使用spawn()函數。

查看在代碼的例子。這裏的命令請求後者是在發送由wexpect

child = wexpect.spawn('some command') 
child.expect ('Password:') 
child.sendline (mypassword) 

只是通過如下回答去Pexpect的與wexpect替代它的輸入。

,也爲以下端口的窗戶已被建議作爲工作之一:

+0

@Eric蒂爾:我希望這有助於 – pyfunc

+0

:好像有兩個模塊:wexpect和winpexpect。他們有什麼不同? –

+0

@EricGentil:是的。兩者似乎都是一個焦點。另外如果你的程序需要filename作爲命令行參數,那麼我的解決方案是無效的。我的印象是這個程序需要用戶輸入,比如輸入密碼。 – pyfunc