python文件读取

img

img


为什么每次读f.tell()读出来是0 3 6 9
比如第一行只有‘1\n'
这不是两个字节吗
\n不是算一个吗
为什么实际上是差三个啊

请注意,f.tell() 方法对于二进制模式和文本模式的文件都适用。然而,在文本模式下,由于可能存在编码和换行符的影响,得到的位置值可能与预期不完全一致。因此,在文本模式下使用 f.tell() 方法时需要谨慎处理。

这个大概率是因为 Windows 的换行符是 \r\n 而 Python 会自动把系统的换行符改成 \n。所以 tell 的是 3,但实际上读取的内容长度为 2。

【以下回答由 GPT 生成】

这个问题出现的原因是因为在Windows系统中,换行符\n实际上是由两个字符组成的:一个是回车符\r,一个是换行符\n。所以在你的文档中,每行的结尾不仅包含了换行符\n,还包含了回车符\r

当你使用f.tell()函数时,它返回的是当前文件指针的位置,即当前读取的字符在文件中的偏移量。由于每行都有回车符和换行符,所以每次读取出来的偏移量都会比实际字符数量多3。

为了解决这个问题,你可以使用strip()函数对每行进行处理,将每行的回车符和换行符都去除掉,从而得到实际的字符数量。

下面是一个具体的代码示例:

with open('file.txt', 'r') as f:
    for line in f:
        line = line.strip()  # 去除回车符和换行符
        print(f.tell()) # 打印当前文件指针的位置
        # 其他处理逻辑...

这样处理之后,你会发现返回的位置正好是每行实际字符的数量。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^