2012-04-30 34 views
1

很抱歉,如果這個問題已被詢問很多次。我有一個DOS .exe文件。通過在Windows中雙擊它可以很好地工作,它在工作文件夾中生成一些輸出文件。不過,我需要從Python中調用它。 我已經嘗試了以下命令(subprocess.Popen和os.system),但它只打開一個DOS窗口而不保存輸出文件。那麼有人可以給我一個提示嗎?從Python中調用DOS可執行文件

謝謝!

CODE

a=subprocess.Popen(r"I:/dosefile.exe") 
a1=os.system(r"I:/dosefile.exe") 

UPDATE 它的工作通過將的.py腳本文件包含dosefile.exe折。有沒有辦法讓它工作而無需遷移.py文件?

找出來。我需要通過使用os.chdir()來改變工作文件夾,如果.py文件是在其他地方

+0

以前討論過類似的問題。希望[這](http://stackoverflow.com/questions/1811691/running-an-outside-program-executable-in-python)幫助。 – AurA

+0

輸出文件是什麼意思?你是否試圖創建py文件存在或dosefile.exe存在的輸出文件 – anselm

+0

也許他想要輸出STDOUT/STDERR輸出。 – ninMonkey

回答

1

嘗試調用它作爲一個系統調用

import os 
os.system('I:/dosefile.exe') 

然後分析它創建的輸出文件。

+0

感謝您的建議。我嘗試了這種方法。但是我的返回值是8.這是否意味着dos文件沒有正確調用? –

+0

它將.py腳本放入dosefile.exe文件夾後工作。謝謝! –

1

一個更好的事情是將使用:

os.chdir('I:')

,然後你可以使用subrprocess。
os.system是非常有限的,subprocess.Popen應該是首選。

甚至更​​好將使用subprocess.Popen關鍵字'cwd',它設置工作目錄。

subprocess.Popen(self, args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None,\ 
preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, \ 
startupinfo=None, creationflags) 

Python是一種簡單的語言實踐,並像使用os.system的東西做的工作,因爲Python是非常寬容的(不喜歡C ...)。不過,我真的建議努力學習Python提供的更強大的工具。
稍後您不會後悔。

+0

感謝您推薦子流程方法。我正在使用它。但是,我的.exe文件會生成一堆文件並將它們保存到我的硬盤驅動器中。有沒有辦法使用stdout將它們傳遞給Python? –

+0

你知道創建的文件的名稱嗎?如果這些都是文本文件,那麼在Popen.communicate()完成時閱讀它們應該非常簡單。 – Oz123

+0

是的,輸出文件可以作爲文本文件打開,我知道他們的名字。但是,我只有超過100個,並且可以根據模擬的持續時間增加數量。 –

相關問題