2015-10-12 132 views
1

我正在用python寫一個簡單的日誌程序。我使用sys.stdin.readlines(),所以用戶可以按Enter鍵開始一個新段落,而不必編程退出。問題在於,當它將輸入寫入文本文件時,它會跳過它們輸入的第一段。所以任何他們在開始新行之前寫入的內容都不會寫入文件。Python writelines跳過raw_input的第一行

#!/usr/bin/python 

import sys 

def main(): #begin stand alone program 

    print "\nPlease tell me about your day.\n"; 
    userEntry = raw_input() #assigns user's input 
    todayEntry = userEntry 
    todayEntry = sys.stdin.readlines() 

    print "\nThank you! See you tomorrow!\n" 

    with open('journal.txt', 'a') as f: 
     f.writelines(todayEntry) #write user's input to txt file 


if __name__ == '__main__': 
    main() #call to main() and complete program 
+3

'userEntry =的raw_input()'讀取一行,然後分配它到'todayEntry',然後丟棄這些數據並用'readlines()'結果覆蓋它。 基本上,'raw_input()'是不需要的。 –

+0

基本上,刪除'sys.stdin.realines()'行。這似乎沒有太大的目的。如果你想閱讀多個段落,你可能想在'while'中使用'raw_input',在特殊命令中使用'break' – inspectorG4dget

回答

0

您正在閱讀的輸入與userEntry = raw_input(),所以現在userEntry包含了用戶輸入的第一行(因爲這是raw_input()一樣)。然後,您將通過todayEntry = sys.stdin.readlines()閱讀更多輸入內容。現在todayEntry包含用戶輸入的其他信息(從sys.stdin.readlines()返回)。然後,您將todayEntry寫入文件,因此該文件包含用戶在第一行之後輸入的內容。

0

你可以做這樣的事情:

import sys 

todayEntry = "" 
print "Enter text (press ctrl+D at the last empty line or enter 'EOF'):" 

while True: 
    line = sys.stdin.readline() 

    if not line or line.strip()=="EOF": 
     break 

    todayEntry += line 

print "todayEntry:\n" 
print todayEntry 

樣本輸入:

111 

222 

333 
ctrl+D 

輸出:

111 

222 

333