2011-12-11 292 views
0

我有一個playgame.cmd文件我想從我的python代碼中優先。從python執行腳本

這是一種運行遊戲(輸入是個人)的遺傳算法,等待遊戲與該個體一起運行,然後解析遊戲日誌中的數據以輸出該個體的適應度。

裏面的.cmd文件(不應該的問題,我不認爲):

python tools/playgame.py "python MyBot.py" "python tools/sample_bots/python/HunterBot.py" 
--map_file tools/maps/example/tutorial1.map --log_dir game_logs --turns 60 --scenario 
--food none --player_seed 7 --verbose -e 

(這是螞蟻AI挑戰,如果你想知道)

這是所有的細節,雖然。我的問題是標題: 如何在python中啓動腳本中線,等待腳本完成,然後恢復python執行?腳本文件與python AntEvolver.py文件位於同一文件夾中。

回答

3

如果你想從一個Python腳本內啓動一個.cmd文件,然後在.cmd文件中啓動另外兩個Python,我想你需要放慢速度,退後一步,然後思考如何讓所有這些東西在一個Python解釋器中運行。但是,直接回答你的問題是使用os.system()(或子模塊,這也是這裏提到):

http://docs.python.org/library/os.html#os.system

0

一個很小的片段:

import subprocess 
# do your stuff with sys.argv 
subprocess.Popen("python MyBot.py", shell=True).communicate() 
# script executed and finished, you can continue... 
+1

當然,但你應該幾乎從來沒有真正使用過這樣的代碼,因爲從另一個腳本啓動一個Python腳本是愚蠢的(除非你由於某種原因不能修改你調用的腳本的代碼)。不要說你的回答是錯誤的,只是它應該有一個免責聲明,這樣人們就不會認爲這是一個好設計。 –

+0

除非你由於某種原因不能修改你所調用的腳本的代碼 - 賓果! – SwimBikeRun

+0

不,這不是因爲它的「python」,你必須在同一個腳本上。他們是噸的情況下不合並他們:) – tito