for循环中的sys.stdin没有抓取用户输入

时间:2017-04-22 19:13:07

标签: python

我在下面有这段代码(test.py):

import sys    
for str in sys.stdin.readline():
    print ('Got here')
    print(str)

出于某种原因,当我运行程序python test.py然后我在abc输入我的终端时,我得到了这个输出:

>>abc
THIS IS THE OUTPUT:
Got here
a
Got here
b
Got here
c
Got here

它会打印Got here五次,并且还会单独打印出每个字符abc,而不是像abc那样打印出一个字符串。我正在做sys.stdin.readline()以获得整条线,但这似乎也不起作用。有谁知道我做错了什么?

我是python的新手,在stackoverflow上的其他任何地方都找不到这个,很抱歉,如果这是一个明显的问题。

2 个答案:

答案 0 :(得分:3)

readline()读取一行。然后你迭代它。迭代一个字符串会给你一些字符,所以你在第一行输入中为每个字符运行一次循环。

使用.readlines()或更好的方法,只需遍历文件:

for line in sys.stdin:

但从stdin获取交互式输入的最佳方法是使用input()(或Python 2中的raw_input())。

答案 1 :(得分:2)

您正在遍历输入的字符串中的每个字符。

import sys    
s = sys.stdin.readline()
print ('Got here')
print(s)

# Now I can use string `s` for whatever I want
print(s + "!")

在您的原始代码中,您从stdin获得了一个字符串,然后您在该输入字符串中循环显示任何字符并将其打印出来(连同“Got here”)。

编辑:

import sys
while True:
    s = sys.stdin.readline()

    # Now I can do whatever I want with string `s`
    print(s + "!")