您可以模仿Python中的C习语。
要读取高达max_size字节数的缓冲区,可以执行以下操作:with open(filename, 'rb') as f:
while True:
buf = f.read(max_size)
if not buf:
break
process(buf)
或者,逐行显示文本文件:# warning -- not idiomatic Python! See below...
with open(filename, 'rb') as f:
while True:
line = f.readline()
if not line:
break
process(line)
您需要使用while True / break构造,因为Python中存在no eof test而不是缺少从读取返回的字节。
在C语言中,你可能有:while ((ch != '\n') && (ch != EOF)) {
// read the next ch and add to a buffer
// ..
}
但是,在Python中不能这样做:while (line = f.readline()):
# syntax error
因为assignments are not allowed in expressions在Python中(尽管最新版本的Python可以使用赋值表达式模拟这一点,请参见下文)。
当然,在Python中,这样做更为习惯:# THIS IS IDIOMATIC Python. Do this:
with open('somefile') as f:
for line in f:
process(line)
更新:自Python 3.8以来,您还可以使用assignment expressions:while line := f.readline():
process(line)