我在下面有这段代码(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
五次,并且还会单独打印出每个字符a
,b
,c
,而不是像abc
那样打印出一个字符串。我正在做sys.stdin.readline()
以获得整条线,但这似乎也不起作用。有谁知道我做错了什么?
我是python的新手,在stackoverflow上的其他任何地方都找不到这个,很抱歉,如果这是一个明显的问题。
答案 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 + "!")