Python文件定位跳过行
我有一个文件,里面的内容是:
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
两件事:
- 在调用
read
之后,你不需要再用seek
。因为在你调用read
后,文件指针已经自动移动到下一个字符的位置了。 - 当你使用
print
时,它会在你的输出后面加上一个换行符(\n
)。
5
把你的寻址调用去掉。每次调用都会跳过接下来的11个字节。而且,读取操作也会移动当前的位置。