gpt4 book ai didi

python 2.7 : len() returns wrong value for line from file with newline character

转载 作者:行者123 更新时间:2023-11-28 22:48:03 25 4
gpt4 key购买 nike

我在 Windows 7 64 位上使用 WinPython 2.7。

我想打开一个文件,逐行读取它的内容,当遇到某个序列时,我想从那里继续操作文件内容。

为了保存当前位置,我将当前行的长度附加到行长度列表中。但是,len(line) 返回的值太小了 1。我怀疑这是因为 Windows 的换行符 \r\n

以下面的代码为例。

  • 测试文件.txt:

     Line1
    Line2
    Line3
  • 测试.py

     fn = 'testfile.txt'

    f = open(fn)

    line_offsets = []
    for line in f:
    line_offsets.append(len(line))

    f.seek(line_offsets[1])
    print '%r' % f.read()
  • 输出:

     '\nLine2\nLine3'
  • 预期输出:

     'Line2\nLine3'

我尝试通过指定读取方法(使用通用换行符)打开文件:f = open(fn, 'rU')但这也没有成功。如果我以二进制模式打开文件,我可以让它工作,但这实际上是一个文本文件,而不是二进制文件,所以我想避免这种情况,我也想了解这里发生了什么。

最佳答案

以二进制模式打开文件,'\r' 不会从行中删除。然后 len 将返回正确的字节数。

f = open(fn, 'rb')

如果您移植到 Python 3,这将尤其重要,因为非二进制文件会在您读取它们时将字节解码为 Unicode 字符,并且计数可能方式关闭。

关于 python 2.7 : len() returns wrong value for line from file with newline character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25532806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com