2015-05-02 35 views
0

我一直在試圖建立一個程序,讓用戶的姓名,寫和保存文檔,這裏是我想出了這麼遠:不確定如何從多行循環獲取用戶輸入 - Python的

doc_name = str(input("Document Name: ")) 
end = "" 
for line in iter(input, end): 
    document = "\n".join(iter(input, end)) 
    pass 
try: 
    savefile = open("/home/" +doc_name+ ".txt", "w") 
    savefile.write(x) 
    savefile.close() 
    print("Document - " +doc_name+ "\nSuccessfully saved.\n\n") 
except: 
    print("An error occurred.\nUnable to save document.\n\n") 

的「for循環」我已經使用了從以下頁面: Raw input across multiple lines in Python但我不確定如何使用從該環路的輸入,所以我可以將其保存到一個文本。 我需要在這行代碼輸入x的地方:

savefile.write(x) 

我使用Python 3.2.3本程序(有沒有什麼幫助?)。 我想知道用戶輸入如何進入在for循環可以存儲在一個varible,然後在程序中的其他一些點使用。

謝謝。

+0

代碼的idention不是有效的Python。請修復它。 –

+0

@Tichodroma對此感到抱歉,在複製代碼時肯定有一些問題。謝謝你讓我知道。 – BaconStereo

+0

'iter(input,end)'是什麼意思:'應該是什麼意思? 'input'是一個Python內置函數。 –

回答

0
doc_name = input("Document Name: ") # don't need to cast to str 
end = "" 
result = [] # I recommend initializing a list for the lines 
for line in iter(input, end): # you only need this single input call 
    result.append(line) # add each line to the list 
try: 
    # using "with" in this manner is guaranteed to close the file at the end 
    with open("/home/" +doc_name+ ".txt", "w") as savefile: 
     for line in result: # go through the list of lines 
      # write each one, ending with a newline character 
      savefile.write(line + '\n') 
except IOError: 
    print("An error occurred.\nUnable to save document.\n\n") 
else: # print this if save succeeded, but it's not something we want to "try" 
    print("Document - " +doc_name+ "\nSuccessfully saved.\n\n") 

你只需要使用pass當Python所預期的語句(如在一個縮進塊),但你有沒有報表它來執行 - 它基本上是一個佔位符。當你想要定義你的程序的功能(例如,def myfunction(a, b):),但你還沒有實際的內容時,它就是常用的功能。

+0

感謝您的答案和詳細信息,但我剛剛運行該程序,而不是寫入每行到文本文件,它已寫入每個字符在另一行。你認爲有什麼辦法可以避免嗎? – BaconStereo

+0

我忘了它是一個'list'。我編輯過的代碼使用'append()'代替。 – TigerhawkT3

+0

謝謝,這正是我需要的! :) – BaconStereo

相關問題