我有一个Python中的函数,它需要一个“阅读器”(我希望这是正确的术语)。基本上,函数应该能够使用文件,sys.stdin等。然后,它必须读取所有行并将它们存储在一个字符串中。阅读从python到阅读器的输入字符串
目前我的函数调用看起来是这样的:
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()”中。我不知道我做错了什么,任何帮助将不胜感激。谢谢
FWIW我认为你要找的术语是'IO'对象。 [Duck-wise](http://en.wikipedia.org/wiki/Duck_typing),你基本上在寻找任何实现['readline']的对象(http://docs.python.org/2/library /io.html#io-base-classes) – kojiro
如果你在windows上,你可能需要添加'和line!='\ r \ n''。为了简单起见,你可能需要将if改为'if'in line in [“”,...]:' –
@LaurIvan我建议将检测到文件结尾检测到操作系统,即。到python库。上面的解决方案也会在满足空行时停止读取输入文件,即。不在EOF。猜猜这是OP的意图。 –