【发布时间】:2013-04-10 19:41:51
【问题描述】:
我在 Windows 64 位上使用 Python 3.3.0。
我有一个如下所示的文本文件:(mediafire 的下载链接见底部)
hello
-data1:blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-data2:blah blah blah blah blah blah blah blah blah blah blah
-data3: Empty
-data4: Empty
我正在尝试浏览文件,因此我使用.tell() 来确定我的位置。但是,当阅读如下所示的文件行时,我得到了一个非常奇怪的结果:
f=open("test.txt")
while True:
a = f.readline()
print("{} {}".format(repr(a),f.tell()))
if a == "":
break
结果:
'hello\n' 7
'\n' 9
'-data1:blah blah blah blah blah blah blah blah blah blah blah blah blah blah bl
ah blah\n' 18446744073709551714
'\n' 99
'\n' 101
'-data2:blah blah blah blah blah blah blah blah blah blah blah\n' 164
'-data3: Empty\n' 179
'\n' 181
'-data4: Empty' 194
'' 194
第 3 行的 18446744073709551714 是怎么回事?虽然它看起来像是一个不可能的值,但f.seek(18446744073709551714) 是一个可以接受的值,显然它确实让我走到了第三行的末尾。不过,我似乎无法弄清楚为什么。
编辑:
以二进制模式打开tell() 没有问题:
f=open("test.txt","rb")
while True:
a = f.readline()
print("{} {}".format(repr(a),f.tell()))
if a == b"":
break
结果:
b'hello\r\n' 7
b'\r\n' 9
b'-data1:blah blah blah blah blah blah blah blah blah blah blah blah blah blah b
lah blah\r\n' 97
b'\r\n' 99
b'\r\n' 101
b'-data2:blah blah blah blah blah blah blah blah blah blah blah\r\n' 164
b'-data3: Empty\r\n' 179
b'\r\n' 181
b'-data4: Empty' 194
b'' 194
test.txt 文本文件可在此处下载,只有 194 字节:http://www.mediafire.com/?1wm4lujb2j48y23
【问题讨论】:
标签: python python-3.x