我正在尝试将python中的文件读取为二进制文件。 我一次对四个字节感兴趣,但是我似乎陷入臭名昭着的while循环:
with open(filename, "rb") as file:
while file:
file.read(4)
print "EOF"
过去一小时我一直在尝试这个,即使在微小的文本文件中,我也从未到达文件的末尾。我做了一个“print test = file.read(4)”只是为了看它打印“”
如何确保停止?我的第一个想法是制作一个if语句,说明file.read(4)(在一个变量中)==“”{4}什么的,但这实际上可能出现在一个文件中,对吗?所以它可能会停在它的中间。
预先计算文件大小的唯一其他选项是什么?
答案 0 :(得分:2)
在文件末尾,file.read(..)
将返回一个字节(或字符串,具体取决于您的python版本):
检查file.read
的返回值;如果它是空的,请打破:
with open(filename, "rb") as file:
while True: # --> replaced `file` with `True` to be clear
data = file.read(4)
if not data: # empty => EOF
# OR if len(data) < 4: if you don't want last incomplete chunk
break
# process data
答案 1 :(得分:1)
file
是一个_io.BufferReader对象,而不是None
,因此永远不会被视为False
。
您应该检查file.read(4)
的返回值是否为空字符串(视为False)。