【发布时间】:2014-03-10 21:19:22
【问题描述】:
我在 Python 中有一个函数,它接收一个“阅读器”(我希望这是正确的术语)。基本上该函数应该能够使用文件、sys.stdin 等。然后它必须读取所有行并将它们存储到一个字符串中。
目前我的函数调用看起来像:
read_data (sys.stdin, sys.stdout)
read_data ("file.txt", "fileout.txt")
函数本身看起来像:
def read_data (reader, s) :
str = ""
str = r.readline()
line = str
while line != "" and line != None and line != '\n':
line = r.readline()
str = str + line
当我运行代码并将输入粘贴到控制台进行测试时,它实际上能够读取包括最后一行在内的所有行,但之后它卡在“line = readline()”中。我不确定我做错了什么,任何帮助将不胜感激。谢谢你
【问题讨论】:
-
如果您使用的是 Windows,您可能需要添加
and line != '\r\n'。为了简单起见,您可能需要将 if 改写为if not line in ["", ...]: -
@LaurIvan 我建议将文件结尾的检测留给操作系统,即。到 python 库。当遇到空行时,上述解决方案也会停止读取输入文件,即。不在EOF。猜猜这是否是 OP 的意图。
标签: python python-2.7 readline sys