可以使用经典循环
file_in = open('suppliers.txt', 'r')
line = file_in.readline()
while line:
line = file_in.readline()
在Python中逐行读取文件。
但是当循环退出时,'line'有什么价值? Python 3文档只读:
readline(size=-1)
Read and return one line from the stream. If size is specified, at
most size bytes will be read.
The line terminator is always b'
' for binary files; for text files,
the newline argument to open() can be used to select the line
terminator(s) recognized.
编辑:
在我的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'
' for binary files; for text
files, the newlines argument to open can be used to select the line
terminator(s) recognized.
这与上面引用的文档完全相同。 但是,正如史蒂夫巴恩斯所指出的,如果你以文本模式打开文件,你会得到一个有用的评论。 (哎呀!我的复制粘贴错误)
以前的文档更容易理解。
TextIOBase文件readline在EOF上返回一个空字符串; 以上摘录来自IOBase中的描述。
在python控制台中打开一个文件,然后在其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.
每个读取线从当前点开始对文件的其余部分进行操作,因此最终将达到EOF。
请注意,如果以二进制模式打开文件,使用rb而不是r,那么将获得对象而不是对象 - 然后帮助消息不同:
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'
' 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进行测试的。
请参阅我的编辑 - Python的3.6.1文档不再以这种方式工作。
@JosiahYoder看到我的编辑。
从教程:https://docs.python.org/3.6/tutorial/inputoutput.html#methods-of-file-objects
f.readline() reads a single line from the file; a newline character
() is left at the end of the string, and is only omitted on the
last line of the file if the file doesn’t end in a newline. This makes
the return value unambiguous; if f.readline() returns an empty
string, the end of the file has been reached, while a blank line is
represented by '
', a string containing only a single newline.
从(Python 3)控制台中的问题运行代码片段显示它返回空字符串,或者如果以二进制模式打开文件则返回空的Bytes对象。
这是在某处记录的吗?也许这是一个广泛的python标准?