2016-03-04 192 views
0

嘿我想寫一個非常簡單的電子郵件刮板在Python 3中,要求用戶輸入電子郵件的文本並將其保存到.txt文件。電子郵件刮板:將文本保存到文本文件

我試圖讓用戶輸入並將其存儲在一個變量中,然後將該變量追加到文本文件中。但是,這隻會將電子郵件的第一行保存到文本文件中。對我來說,它看起來像我試圖存儲電子郵件的變量只保存第一行,並在遇到新行時停止。

這是我試過的代碼。但只寫第一行到file.txt而不是整個文本。我該如何做這項工作?

print("Paste text from email") 
content = input(">") 
file = open('file.txt','a') 
file.write('\n' + '--new email--' + '\n' + content + "\n") 

回答

1

問題是,input()將只讀直到第一個換行符。如果你想讀多行,你需要把input()放在一個循環中。問題就變成了如何知道什麼時候打破循環?一個簡單的解決方案是查找輸入流完成的標誌,例如字符串「EOF」。例如:

print("Paste text from email") 

content = "" 
line = input(">") 
while line != "EOF": 
    content += line + "\n" 
    line = input(">") 

file = open('file.txt','a') 
file.write('\n' + '--new email--' + '\n' + content + "\n") 
file.close() # don't forget to close your file! 

然後,您將運行腳本,粘貼電子郵件,然後鍵入「EOF」。

+0

謝謝!這樣可行。有沒有一種方法可以標記電子郵件結束標誌? –

+0

您可以在輸入上放置超時,因此在x秒內沒有輸入任何內容後,請寫入文件。 https://stackoverflow.com/questions/15528939/python-3-timed-input – dbc

相關問題