2014-09-24 25 views
0

運行Python程序這是我使用Python第一次,我試圖創建一個程序,它可以:創建和Python程序

  1. 在IDLE
  2. 創建一個新的Python程序使新程序包含打印命令 - 打印(「!你好,世界」)
  3. 保存程序並運行它
  4. 退出空閒

這是我有這麼F中的代碼AR。它似乎沒有創建該文件,我可能犯了一些我不知道的錯誤。

import sys 

name = input('C:\\MyFolder\\program.py') 

//Create program containing print command 
file = open(name, 'w') 
file.write("print('Hello, world!')") 
file.close() 

//Run program (and possibly save it?) 
os.system('C:\\MyFolder\\program.py') 

//Exit IDLE 
sys.exit(0) 

如何創建,寫入並運行新程序?

+1

你輸入什麼作爲對「輸入」的迴應?如果你只是在返回,那麼'name'將是空的; 'input'的參數只是一個提示,而不是默認值。 – abarnert 2014-09-24 18:41:45

+0

作爲一個方面說明,你真的不應該使用'os.system'。閱讀幫助或文檔;注意它建議使用'subprocess'。在這種情況下,你可能想要的是'subprocess.check_call([sys.executable,'C:\\ MyFolder \] program.py'])'。 – abarnert 2014-09-24 18:42:54

+0

還有一件事:你正在創建一個名爲'name'的文件,但是然後試圖運行一個名爲'C:\\ MyFolder \\ program.py'的文件。因此,如果用戶輸入了其他內容,則不會找到該文件。您可能想運行'name'而不是'C:\\ MyFolder \\ program.py''。 – abarnert 2014-09-24 18:43:37

回答

0

雖然它不是完全是從你的問題中清楚,我想我知道你的問題是什麼。

首先,當你做input('C:\\MyFolder\\program.py')時,C:\\MyFolder\\program.py就是顯示給用戶的提示。這不是默認值。因此,如果用戶剛剛返回,則name將爲空,並且您不會成功創建文件。

其次,即使用戶輸入了某些內容,除非他輸入的內容正好是C:\\MyFolder\\program.py,您正在創建一個帶有一個名稱的文件,然後嘗試運行具有不同名稱的文件,這不起作用。

所以,你可能想是這樣的:

default_name = 'C:\\MyFolder\\program.py' 
name = input(default_name) 
if not name: 
    name = default_name 

# ... your existing code to create the file 

os.system(name) 

有很多的方式,你可以改善這種(使用subprocess.check_callsys.executable,一個shbang行添加到文件,請使用with語句而不是明確的close,使提示看起來像Filename (default C:\MyFolder\program.py)?,而不僅僅是默認值,...)。但這應該足以讓它工作。