" \ X00 ....... \ X00"从文件输出,不显示数据

时间:2015-03-21 18:08:04

标签: python

所以,如果我使用

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']
显然应该是最后一行。我一直在使用这个代码完全没问题,但突然间我得到了这个问题。

1 个答案:

答案 0 :(得分:0)

您不应将seek用于文本文件,而readlines用于二进制文件。行为未定义。 readlines可以使用内部缓冲区。如果您寻求低于0或大于文件,某些系统会表现得很尴尬。