我确实很感激这个问题已经被问了数百万次,但我无法弄清楚,在尝试逐行读取 .txt 文件时,我一次性读取了整个文件。
这是我的小片段
num = 0
with open(inStream, "r") as f:
for line in f:
num += 1
print line + " ..."
print num
查看 open 函数,有任何建议使用第二个参数来限制读取,因为这只是写入文件的“模式”。
所以我只能猜测我的文件也有同样的问题,但这是一个txt文件,逐行输入。
有什么提示吗?
最佳答案
如果没有更多信息,很难绝对确定......但最有可能的是,您的问题是行结尾不合适。
例如,在现代 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"
没有任何效果,已被弃用。
关于python - 在Python中一次读取一行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283539/