python在while循环中将多行粘贴到原始输入

python在while循环中将多行粘贴到原始输入,python,raw-input,Python,Raw Input,我有一些代码如下所示: while line != '' and line != 'STOP ME': line = raw_input("") buf.append(line+'\n') sys.stdin.flush() print raw_input("Input1:") print raw_input("Input2:") buf.append(line.split('STOP ME\n', 1)[0]+'\

我有一些代码如下所示:

while line != '' and line != 'STOP ME':
    line = raw_input("")
    buf.append(line+'\n')

sys.stdin.flush()
print raw_input("Input1:")
print raw_input("Input2:")
buf.append(line.split('STOP ME\n', 1)[0]+'\n')
问题是,如果用户像这样复制和粘贴数据

第1行

第2行

阻止我

“空行”

“空行”

一些垃圾文本


在“停止我”之后,我的原始输入将被垃圾文本溢出。有什么办法可以避免吗?

可能您不需要这里的
原始输入?您可以使用
sys.stdin
类文件对象。例如
sys.stdin.read
方法

或者你可以用这样的东西:

while line != '' and line != 'STOP ME':
    line = raw_input("")
    buf.append(line+'\n')

sys.stdin.flush()
print raw_input("Input1:")
print raw_input("Input2:")
buf.append(line.split('STOP ME\n', 1)[0]+'\n')

停止我之前获取数据。

我知道使用sys.stdin.read可以避免我遇到的问题,但我担心用户会忘记如何终止输入。。。即使我在开始时提醒用户使用“Ctrl-D”,如果文本超过一个屏幕,他们也很可能看不到文本。感谢更新!但我认为这对我没有帮助。buf中的内容没有问题,但是存在未完成的stdin,这将导致程序不会在“Input1:”和“Input2:”处停止。我认为sys.stdin.read是解决此问题的最接近的方法。另外,我刚刚学会在Windows中终止stdin.read(),我需要按Ctrl-Z+Enter,而在Linux中,只需按一次Ctrl-D就足够了。