微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在换行符处与`TextIOBase.tell()` 的偏移量不可能大

如何解决在换行符处与`TextIOBase.tell()` 的偏移量不可能大

我有一个包含换行符的文本文件。在任何换行符的位置以文本模式打开,.tell() 返回一个非常大的数字。否则 .tell() 行为正常。换行符处的偏移量“不可能很大”,因为尽管它是一个“不透明数字”,但 seek() 到该位置的操作失败并显示 OverflowError: cannot fit 'int' into an index-sized integer

以二进制模式读取行为完全正常,这仅发生在某些文件中。此外,寻求“隐含”偏移量(例如第 29 行或第 30 行,请参见下面的输出)表现正常。对正在发生的事情有任何见解吗?

代码
# File content omitted due to NDA
with open(FILE,'r') as fh:
    print(f"ENCODING: {fh.encoding}")
    while char := fh.read(1):
        print(fh.tell(),':',char=='\n')
print('EOF')
输出
ENCODING: UTF-8
1 : False
2 : False
3 : False
...
27 : False
28 : False
18446744073709551646 : True
340282367000166625996085689099021713438 : True
31 : False
32 : False
...
118 : False
119 : False
340282367000166625996085689099021713528 : True
121 : False
122 : False
...
180 : False
181 : False
340282367000166625996085689099021713590 : True
183 : False
184 : False
...
2012 : False
2013 : False
18446744073709553631 : False
1461501637671185285124623296198104371161410308063 : True
EOF
蟒蛇版本:
3.8.6 (default,Nov 18 2020,21:37:10) 
[GCC 10.2.0]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。