2017-10-13 59 views
-1

根據用戶的姓名,他們的感受以及他們今天想要做什麼來請求輸入。輸入到文件中

代碼運行後,它會詢問這些輸入,用戶當然必須在Python IDLE中輸入輸入。

而不是用戶輸入他們的輸入到Python空閒,我想用戶回答文本文件中的問題,而不是。我將如何做到這一點?

questions = open ("questions.txt","a+") 

quest1 = input("Hi what is your name?: ") 
quest2 = input("How are you today?: ") 
quest3 = input("What would you like to do?: ") 

allQuests = quest1+","+quest2+","+quest3 

questions.write(str(allQuests+("\n")) 
questions.close() 
+2

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 StackOverflow不是一個設計,編碼,研究或教程服務。 – Prune

+1

您似乎在問如何讓用戶使用文本編輯器而不是Python界面。那是對的嗎?如果是這樣,那麼這個問題超出我們的控制範圍,並且您的** python **標籤不適用。 – Prune

+0

不,我希望用戶在文本文件中回答問題,而不是用python回答。 @Prune – Lucian

回答

0

你可以建立一個io.StringIO(或2.7 StringIO的),從文本文件

import io 

answer_file = 'file name of the answer file' 
f = open(answer_file) 
myStringIOvar = io.StringIO(f.read()) 
f.close() 

閱讀,然後將內容對象設置

sys.stdin = myStringIOvar 

,使您的調用input()從您的文本文件流中讀取。提示仍然會在stdout中顯示出來(無用),您將無法在程序的任何稍後時間從標準輸入讀取。

更好的解決方案是重寫你的程序來查看sys.args並查看是否在命令行上傳遞了一個文件名。如果是這樣,調用一個返回從文件讀取的數據的子例程。如果不調用使用input()以交互方式提示用戶的子例程。

另一個選擇是讓你的程序首先詢問用戶的答案文件名,如果他們沒有提供一個答案(即只是返回),你問交互。