可以使用经典循环
file_in = open('suppliers.txt', 'r')
line = file_in.readline()
while line:
line = file_in.readline()
在Python中逐行读取文件。
但是当循环退出时,'line'有什么价值? Python 3文档只读:
的readline(大小= -1)
从流中读取并返回一行。如果指定了大小,则为 将读取大多数大小的字节。
对于二进制文件,行终止符总是b'\ n';对于文本文件, open()的换行参数可用于选择行 终结者被认可。
修改:
在我的Python版本(3.6.1)中,如果以二进制模式打开文件,help(file_in.readline)
会给出
readline(size=-1, /) method of _io.BufferedReader instance
Read and return a line from the stream.
If size is specified, at most size bytes will be read.
The line terminator is always b'\n' for binary files; for text
files, the newlines argument to open can be used to select the line
terminator(s) recognized.
与docs quoted above完全相同。但是,如Steve Barnes所述,如果您以文本模式打开文件,则会收到有用的注释。 (哎呀!我的复制粘贴错误)
答案 0 :(得分:4)
在打开文件的python控制台中, f ,然后在其readline方法上调用help会告诉您:
>>> f = open('temp.txt', 'w')
>>> help(f.readline)
Help on built-in function readline:
readline(size=-1, /) method of _io.TextIOWrapper instance
Read until newline or EOF.
Returns an empty string if EOF is hit immediately.
每个readline对当前点的文件的剩余部分进行操作,因此最终会达到EOF。
请注意,如果您使用rb
而不是r
以二进制模式打开文件,那么您将获得<class '_io.TextIOWrapper'>
对象而非<class '_io.BufferedReader'>
对象 - 然后帮助信息不同:
Help on built-in function readline:
readline(size=-1, /) method of _io.BufferedReader instance
Read and return a line from the stream.
If size is specified, at most size bytes will be read.
The line terminator is always b'\n' for binary files; for text
files, the newlines argument to open can be used to select the line
terminator(s) recognized.
当此方法到达EOF时,它将返回一个空字节数组b''
而不是空字符串。
请注意,以上所有内容都是在Win10上使用python 3.6进行测试的。
答案 1 :(得分:3)
从教程:https://docs.python.org/3.6/tutorial/inputoutput.html#methods-of-file-objects
f.readline()
从文件中读取一行;换行符 (\n
)留在字符串的末尾,并且只在其中省略 如果文件不以换行符结尾,则为文件的最后一行。这使得 返回值明确;如果f.readline()
返回空 字符串,已到达文件的末尾,而空白行是 由'\n'
表示,只包含一个换行符的字符串。
答案 2 :(得分:0)
在(Python 3)控制台中运行问题的代码片段显示它返回一个空字符串,如果以二进制模式打开文件,则返回一个空的Bytes对象。
这是在某处记录的吗?也许这是一个广泛的蟒蛇标准?