我正在编写单元测试,看看如果我的代码正在寻找并读取以只读和二进制模式(rb
模式)打开的二进制文件的末尾会发生什么。
我很确定在这种情况下会引发异常,但它不是(在Python 3.x上测试):
>>> fname = r"c:\tmp\test.bin"
>>> os.path.getsize(fname)
60
>>> f = open(fname, "rb")
>>> f.seek(100)
100
>>> f.tell()
100
>>> f.read()
b''
>>>
问题:
bytes
吗?它是实现定义的吗? 修改:将模式从r+b
更改为rb
,其行为仍然相同。
答案 0 :(得分:3)
您的问题询问了读取模式,但您的代码演示了读写模式。寻找可写文件的结尾并不是错误,因为执行后续写入将导致支持它的文件系统上的sparse file(并且在文件系统的新写入之前进行零填充,直到写入文件系统为止。吨)。