问题描述
我有一个包含换行符的文本文件。在任何换行符的位置以文本模式打开,.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 (将#修改为@)