对以append模式打开的Python文件对象调用tell()如果不是手动查找,则返回0

2024-07-04 06:06:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到Python文件处理程序在append模式下创建时有一个奇怪的行为。在下面的示例中,ofh.tell()第一次在append模式下使用它时返回0。在

ofh = open("test.txt","wb")
print ofh.tell() # output: 0
ofh.write("asdf")
print ofh.tell() # output: 4
ofh.close()

ofh = open("test.txt","ab")
print ofh.tell() # output: 0
ofh.seek(0,2) # seek to end of file
print ofh.tell() # output: 4

对于一些安全检查,我需要它返回“实际”位置(4)。在

  1. 手动查找文件的结尾是否是正确的方法?在
  2. 观察到的行为有什么好的理由吗?返回与数据写入位置不同的位置似乎不是一个好主意。在

使用2.7位Python和647位I。在


Tags: 文件testtxt处理程序示例output模式seek
1条回答
网友
1楼 · 发布于 2024-07-04 06:06:24

在python2中,append模式意味着every write goes to the end of the file。文件指针可能真的从零开始,但这并不重要,因为它会在每次写入时都查找到结尾。在

注意,seek()和{}在append模式下基本上是无用的,因为前者总是被隐式seek to end覆盖。如果需要在没有此行为的情况下附加到文件,请在r+b模式下打开它,然后手动查找到文件的末尾。在

相关问题 更多 >

    热门问题