所以,如果我使用
tail 'path'
查看文本文件的最后几行我以这种格式获得了9行数据:
20-3-2015 16:7:13 6
我用
splitted = file_open(name).rstrip().split(" ");
file_open函数是
def file_open(name):
f_name = prefix + name;
offs = -10;
with open(f_name, 'r') as f: # Open file to read
while True:
f.seek(offs,2) # Jump to final line and go to point in line to begin
lines = f.readlines();
if len(lines) >= 2:
return lines[-1]
offs *= 2;
这应该打开文件,转到最后一行返回完整的最后一行,然后拆分三列。
而是splitted的值是
['\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']
显然应该是最后一行。我一直在使用这个代码完全没问题,但突然间我得到了这个问题。
答案 0 :(得分:0)
您不应将seek
用于文本文件,而readlines
用于二进制文件。行为未定义。 readlines
可以使用内部缓冲区。如果您寻求低于0或大于文件,某些系统会表现得很尴尬。