2012-09-21 57 views
0

我想製作一個腳本,從我的電腦運行.exe文件。我想我正在使用錯誤的命令。我嘗試了所有其他命令,如import os, os.startfile,但它們不起作用。如何在Python中運行程序。

這裏是我的代碼:

loop=0 
while loop==0: 
    answer=raw_input("coded by: Narralol\n\n" 
    "Pick a task:\n" 
    "1) Start Minecraft.exe\n" 
    "2) Start Minecraft_Server.jar\n" 
    "3) Backup your server\n" 
    "4) Copy the backup to your desktop\n" 
    "5) Exit\n") 
    if answer==1: 
     execfile('D:\Games\Minecraft\Minecraft.exe') 
    elif answer==2: 
     execfile('D:\Games\Minecraft\Minecraft_server.jar') 
    elif answer==5: 
     loop=1 
+0

請參閱http://stackoverflow.com/q/12339671/1240268 –

+0

謝謝,我已經有了。 – Narraxus

+0

你可以編輯標題:)。我添加了標籤py2exe,我假設你正在使用它來做到這一點。 –

回答

1

您可以使用os.system()像這樣(注:它通常最好使用subprocess做事像這樣):

answer = 0 
while answer < 5: 
    answer = int(raw_input("coded by: Narralol\n\n" 
    "Pick a task:\n" 
    "1) Start Minecraft.exe\n" 
    "2) Start Minecraft_Server.jar\n" 
    "3) Backup your server\n" 
    "4) Copy the backup to your desktop\n" 
    "5) Exit\n").strip()) 
    if answer == 1: 
     os.system('D:\Games\Minecraft\Minecraft.exe') 
    elif answer == 2: 
     os.system('D:\Games\Minecraft\Minecraft_server.jar') 
    elif answer == 5: 
     break 

更改了a代碼中的其他一些小事情就像檢查int對另一個int(而不是字符串對int)等。

+0

是的,非常感謝你,它的工作:)我認爲問題是答案被認爲是一個字符串,而不是一個int,所以它沒有執行該文件。它只是保持循環而不做任何事情。也許這可能是錯誤? – Narraxus

+0

這是正確的,即:'x =「1」; y = 1; x!= y; int(x)== y; x == str(y)' – chown

+0

Oooooh yes我明白了:)。這很有道理! – Narraxus

3

使用subprocess module運行外部命令:

import subprocess 

    subprocess.call('D:\Games\Minecraft\Minecraft.exe') 
+1

os.system大部分時間都能正常工作...... –

+2

@JoranBeasley:即使是'os.system'文檔也指出'subprocess'是更好的方法;一方面,默認參數處理方法避免了shell注入漏洞。 –

+1

是的,我知道......但他控制輸入,並不需要輸出......所以在這種情況下,我會說os.system會正常工作......但子進程肯定是「正確」的方式去做 –