2012-11-01 83 views
9

我有一個外部可執行文件,我試圖從一個Python腳本運行。 CMD可執行文件運行但不生成輸出。可能會在輸出生成之前退出。有關如何延遲退出直至產生輸出的任何建議?如何使用Python運行外部可執行文件?

import subprocess, sys 
from subprocess import Popen, PIPE 
exe_str = r"C:/Windows/System32/cmd C:/temp/calc.exe" 

parent = subprocess.Popen(exe_str, stderr=subprocess.PIPE) 
+2

可能更好地問這個在Stackoverflow? – Simbamangu

+1

與GIS有關的問題? – Mapperz

+0

也許你是對的。輸入數據是高程和流向,這就是爲什麼我在這裏發佈它。 – 2012-11-01 16:20:36

回答

9

使用subprocess.call,更多信息here

import subprocess 
subprocess.call(["C:\\temp\\calc.exe"]) 

import os 
os.system('"C:/Windows/System32/notepad.exe"') 

我希望它可以幫助你......

+0

它運行但沒有生成輸出。我使用cmd測試了可執行文件,並且在生成輸出之前至少需要2-3秒。這是問題,如何使用python退出前保持3秒鐘? – 2012-11-01 12:53:14

+2

'進口時間 time.sleep(3)' – Aragon

+1

奇怪。即使在3秒的條件下,它也不會產生任何輸出。我增加了時間,但沒有用。不知道還有什麼可能是問題。 – 2012-11-01 13:18:30

6

os.system法計提折舊,不應該用於新的應用程序。子流程模塊是執行你所需要的pythonic方法。

下面是一些代碼,我寫了幾個星期前使用subprocess加載文件,你需要使用延遲退出,直到數據已收到,並已啓動程序完成命令的例子是wait()

import subprocess 

cmd = "c:\\file.exe" 
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000) 
process.wait() 

creationflags=0x08000000是一個可選參數,它禁止啓動一個窗口,如果您不需要直接看到正在調用的程序,該窗口會很有用。

+0

它仍然沒有生成輸出。按照您的建議,可以從cmd窗口完美運行,但無法使用pythonic方式輸出。 – 2012-11-02 01:37:22

相關問題