Python文件定位跳过行

3 投票
3 回答
577 浏览
提问于 2025-04-18 13:16

我有一个文件,里面的内容是:

0x11111111
0x22222222
0x33333333
0x44444444

我正在用下面的方式逐行读取这个文件:

f = open('test1', 'r')
print "Register CIP_REGS_CONTROL value:"
for i in range(4):
    content = f.read(11)
    f.seek(11, 1)
    print content

注意,每一行有11个字节,这是因为每行末尾都有一个换行符('\n')。但是输出结果是:

0x11111111

0x33333333

在第一行和第三行之后出现了空行,我不知道为什么会这样。如果我把每行末尾的换行符删掉,并把读取和查找的大小改成10,我得到的结果是:

0x11111111
0x33333333

还有两行也消失了。有没有人能帮帮我?提前谢谢!

3 个回答

1

最简单(也是最安全)的方式是使用一个叫做 with 的结构,这样可以确保你的文件会被正确关闭。然后可以使用 readline() 来读取文件中的一行。

print "Register CIP_REGS_CONTROL value:"
with open('test1', 'r') as f:
    for i in range(4):
        print f.readline().strip()

strip() 这个方法在没有参数的情况下,会去掉字符串开头和结尾的所有空白字符(包括换行符 \n)。

4

两件事:

  1. 在调用 read 之后,你不需要再用 seek。因为在你调用 read 后,文件指针已经自动移动到下一个字符的位置了。
  2. 当你使用 print 时,它会在你的输出后面加上一个换行符(\n)。
5

把你的寻址调用去掉。每次调用都会跳过接下来的11个字节。而且,读取操作也会移动当前的位置。

撰写回答