Python 如何在打印从文件读取的行时跳过额外的换行符?

Python 如何在打印从文件读取的行时跳过额外的换行符?,python,Python,我正在从stdin读取python程序的输入(我已经为stdin分配了一个file对象)。输入的行数事先不知道。有时程序可能会得到1行、100行甚至根本没有行 import sys sys.stdin = open ("Input.txt") sys.stdout = open ("Output.txt", "w") def main(): for line in sys.stdin: print line main() 这是最接近我的要求。但这有一个问题。如果输

我正在从stdin读取python程序的输入(我已经为stdin分配了一个file对象)。输入的行数事先不知道。有时程序可能会得到1行、100行甚至根本没有行

import sys
sys.stdin  = open ("Input.txt")
sys.stdout = open ("Output.txt", "w")

def main():
    for line in sys.stdin:
        print line

main()
这是最接近我的要求。但这有一个问题。如果输入是

3
7 4
2 4 6
8 5 9 3
它打印

3

7 4

2 4 6

8 5 9 3
它会在每行之后打印一个额外的换行符。如何修复此程序或解决此问题的最佳方法是什么

编辑:以下是运行示例


EDIT2:谢谢你的回答。我知道了这个错误

import sys
sys.stdin  = open ("Input.txt")
sys.stdout = open ("Output.txt", "w")

def main():
    for line in sys.stdin:
        for data in line.split():
            print data,
        print ""

main()

像这样更改了程序,并按预期工作。:)

python
print
语句添加了一个换行符,但原始行上已经有了一个换行符。您可以通过在末尾添加逗号来抑制它:

print line , #<--- trailing comma

或者,您可以在打印前将换行符从行尾剥离:

print line.rstrip('\n') # There are other options, e.g. line[:-1], ... 

但我认为这并没有那么漂亮。

或者,当你关心外观时,使用sys.stout.write()而不是打印。Downvoter,请让我知道如何改进这篇文章。我想说两个可能的原因:1。标题有误导性,根本不是关于EOF的处理;2.在EDIT2中,为什么需要拆分?您应该打印
行、
行.strip()
,但您的代码也会压缩空格。
print line.rstrip('\n') # There are other options, e.g. line[:-1], ...