获取文件的最后n行-解码错误

时间:2018-12-21 04:41:18

标签: python python-3.x unicode tail utf

我有一个utf-16文件,我正在尝试读取文件的后几行。这是我现在拥有的:

def get_last_n_lines(self, n, file=None):
    '''
    Sorted from the bottom to the top.
    '''
    file = file or self.file
    s = subprocess.check_output(['tail', '-%s' % str(n), file]).decode('utf-8')
    return

但是,出现以下错误:

  

UnicodeDecodeError:'utf-8'编解码器无法解码位置4607的字节0xae:无效的起始字节

即使我.decode('utf-16')也给我一个错误。从tail命令获取文件的最后100行的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

可行的是在解码方法中添加更通用的unicode编码:

> s = subprocess.check_output(['tail', '-%s' % str(n), file]).decode('unicode_escape')

答案 1 :(得分:1)

您可以添加encoding =“ 437”或encoding =“ 850”。