Python writelines跳过raw_input的第一行

时间:2015-10-12 00:29:02

标签: python file input

我正在用python编写一个简单的日记程序。我使用了sys.stdin.readlines(),因此用户可以按Enter键开始新的段落,而不必编程退出。问题是当它将输入写入文本文件时,它会跳过它们输入的第一段。所以他们在开始新行之前写的任何东西都没有写到文件中。

#!/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

2 个答案:

答案 0 :(得分:0)

您正在使用userEntry = raw_input()阅读输入,因此userEntry现在包含用户输入的第一行(因为这是raw_input()所做的事情)。然后,您使用todayEntry = sys.stdin.readlines()阅读更多输入。 todayEntry现在包含用户输入的其他内容(从sys.stdin.readlines()返回)。然后您将todayEntry写入文件,因此该文件包含用户在第一行之后输入的内容。

答案 1 :(得分: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