Python-Readline控件-D非空行后不工作为什么?
我是python新手,如果我的问题看起来很奇怪,我很抱歉。我想在标准输入的每一行上循环,并立即将修改后的行返回到标准输出。大多数情况下,我的代码都是有效的。然而,我不知道如何使这项工作完全 我有以下代码Python-Readline控件-D非空行后不工作为什么?,python,Python,我是python新手,如果我的问题看起来很奇怪,我很抱歉。我想在标准输入的每一行上循环,并立即将修改后的行返回到标准输出。大多数情况下,我的代码都是有效的。然而,我不知道如何使这项工作完全 我有以下代码 while True: line = sys.stdin.readline() if not line: break sys.stdout.write(line) 当以交互方式使用时,如果新行上有EOF,这将退出,但是如果在键入Control-D之前
while True:
line = sys.stdin.readline()
if not line:
break
sys.stdout.write(line)
当以交互方式使用时,如果新行上有EOF,这将退出,但是如果在键入Control-D之前有文本,我必须在代码退出行之前给出两次,然后在循环退出之前给出一次
如何解决此问题。python文档中建议的策略是:
for line in sys.stdin:
sys.stdout.write(line)
请参阅。python文档中建议的策略是:
for line in sys.stdin:
sys.stdout.write(line)
请参阅。我想我的答案可以立即复制:
它与^D
有关系:它只是停止电流
read(2)
call
如果程序执行int rdbytes=read(fd、buffer、sizeof buffer)代码>
然后按^D
中间的read()
返回当前读取的值
缓冲区中的字节,返回它们的编号。同样的情况也发生在网上
结束最后的\n
始终是交付的
因此,只有一行开头或另一行后面的^D
具有
使read()
返回0
,表示EOF的预期效果
当然,这种行为也会影响Python代码。我认为我的答案可以立即复制:
它与^D
有关系:它只是停止电流
read(2)
call
如果程序执行int rdbytes=read(fd、buffer、sizeof buffer)代码>
然后按^D
中间的read()
返回当前读取的值
缓冲区中的字节,返回它们的编号。同样的情况也发生在网上
结束最后的\n
始终是交付的
因此,只有一行开头或另一行后面的^D
具有
使read()
返回0
,表示EOF的预期效果
当然,这种行为也会影响Python代码。您必须测试line
的内容,以获得一个潜在的EOFDid—您实际运行代码了吗?我认为您应该在处得到一个错误,而true:
。是的,我运行了我的代码。我不是那么爱发牢骚。Njzk2如何测试EOF?另外,在2个控制Ds之前,我不会中断读线。我如何解决这个问题。并且您没有得到NameError:name'true'未定义
?这怎么可能?您必须测试行的内容
以查找潜在的EOFDid您是否实际运行代码?我认为您应该在处得到一个错误,而true:
。是的,我运行了我的代码。我不是那么爱发牢骚。Njzk2如何测试EOF?另外,在2个控制Ds之前,我不会中断读线。我如何解决这个问题。并且您没有得到NameError:name'true'未定义
?这怎么可能?我没有说清楚,我希望输出是立即的。这是一个非常有趣的问题——你的代码是“正确的”,这只是一个获得交互性以提供正确输入的问题。我没有说清楚,我希望立即输出。这将一直等到输入的EOF被写入输出。这实际上是一个非常有趣的问题-你的代码是“正确的”,这只是一个让交互性为你提供正确输入的问题。直到我读了6遍才明白这一点。这解决了我的问题。谢谢。直到我读了6遍才明白这一点。这解决了我的问题。