我正在从stdin读取我的python程序的输入(我已经将文件对象分配给stdin)。预先不知道输入行数。有时程序可能会获得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
每行后都会打印一个额外的换行符。我如何修复此程序或解决此问题的最佳方法是什么?
编辑:以下是示例运行http://ideone.com/8GD0W7
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()
更改了这样的程序,它按预期工作。 :)
答案 0 :(得分:10)
python print
语句添加换行符,但原始行已经有了换行符。您可以通过在末尾添加逗号来抑制它:
print line , #<--- trailing comma
对于python3,(print
成为函数),这看起来像:
print(line,end='') #rather than the default `print(line,end='\n')`.
或者,您可以在打印前删除换行符之前的换行符:
print line.rstrip('\n') # There are other options, e.g. line[:-1], ...
但我认为这不是那么漂亮。