我很感激这个问题已经被问到了数百万的时间,但是在尝试逐行读取.txt文件时我无法弄清楚我一次性读取整个文件。
这是我的小片段
num = 0
with open(inStream, "r") as f:
for line in f:
num += 1
print line + " ..."
print num
看一下open函数,有什么东西可以建议第二个参数来限制读数,因为这只是用来写文件的“模式”。
所以我只能猜测我的文件存在同样的问题,但这是一个txt文件,逐行输入。
任何提示?
答案 0 :(得分:2)
如果没有更多信息,很难绝对肯定......但最有可能的是,你的问题是不合适的行结束。
例如,在现代Mac OS X系统上,文本文件中的行以'\n'
换行符结尾。因此,当您执行for line in f:
时,Python会破坏'\n'
字符上的文本文件。
但在经典Mac OS 9上,文本文件中的行以'\r'
结尾。如果你有一些古老的经典Mac文本文件,你给Python一个,它将寻找'\n'
字符,而不是找到任何,所以它会认为整个文件是一个巨大的线。
(当然在现实生活中,Windows比经典的Mac OS更常见,但是我使用这个例子是因为它更简单。)
Python 2 :幸运的是,Python有一个名为"universal newlines"的功能。有关完整的详细信息,请参阅链接,但简短的版本是在打开文本文件时将"U"
添加到模式的末尾意味着Python将读取三个标准的行结束约定中的任何一个(并将它们提供给您代码为Unix风格的'\n'
)。
换句话说,只需更改一行:
with open(inStream, "rU") as f:
Python 3 :通用换行符是标准行为的一部分;添加"U"
无效并且已弃用。