python文件寻求跳过线

时间:2014-07-14 16:20:19

标签: python file seek

我有一个内容文件:

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

请注意,由于末尾的'\ n'字符,每行有11个字节。但输出是:

0x11111111

0x33333333

在第1和第3行之后有一个空行,我不知道为什么会这样。如果我删除每行中的'\ n',并将读取和寻求的大小更改为10,我得到:

0x11111111
0x33333333

也缺少2条线。有人可以帮忙吗?提前谢谢。

3 个答案:

答案 0 :(得分:5)

删除您的搜寻电话。每个调用都跳过接下来的11个字节。读取也会移动当前位置。

答案 1 :(得分:4)

两件事:

  1. seek之后您不需要read。在调用read
  2. 之后,您在文件中的位置已经是下一个字符
  3. 当您致电print时,会在您的输出中添加换行符(\n)。

答案 2 :(得分: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)。