Python file.tell()给出奇怪的数字?

2024-05-19 00:05:42 发布

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

我在Windows64位上使用Python3.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

三号线的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


Tags: 文件testtxthelloopenemptyblah文本文件

热门问题