反求Python

2024-05-19 07:05:57 发布

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

所以我试着读取文件中倒数第二的数字。我的代码如下:

file = open("file.txt", "rb")
print (file.seek(-2, 2))
file.close()

我的档案内容如下:

^{pr2}$

我原以为程序会打印“1”,但实际上它会打印“3”,有人知道为什么会这样,以及如何修复它吗?谢谢!在


Tags: 文件代码程序txt内容closeseek数字
3条回答

seek的返回值不是从文件中读取的任何内容。在Python2上,返回值是None;在Python3上,返回值是一个表示文件中新的绝对位置的数字,它可能与文本模式下从文件开始的字节数或字符数不符。在

如果要在查找后读取字符,请调用file.read(1)。在

另一种方法是读取文件并将其拆分为数组。最后取最后一个数组字段,如下所示。在

if __name__ == '__main__':
    file = open("file.txt", "rb")
    st = file.read().decode('utf-8').split(',') #convert into array
    l = len(st) # length of the array
    print(st[l - 2]) #(n-2) th element of the array
    file.close()

值得注意的是,seek通过字符偏移量(或二进制模式下的字节)进行操作。示例中分隔数字的每个逗号都将计为一个字符(在本例中为字节,因为您是以二进制模式打开的)。为了读取您提供的示例中倒数第二个数字,您需要查找4个字符(2个数字和2个逗号,因为您的文件以逗号结尾),然后读取单个字符

f.seek(-4, 2)
r.read(1)

要意识到,如果任何一个数字大于1位数,这是行不通的。看看你的文件,它似乎不是用二进制编写的,所以以二进制模式打开它没有多大意义。如果文件足够小,可以放入内存中,那么读取整个文件,然后对其进行解析以获得倒数第二个数字将更简单、更不容易出错

^{pr2}$

相关问题 更多 >

    热门问题