首页 > 解决方案 > 获取文件的最后 n 行 -- 解码错误

问题描述

我有一个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 行的正确方法是什么?

标签: pythonpython-3.xunicodetailutf

解决方案


起作用的是在 decode 方法中添加更通用的 unicode 编码:

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

推荐阅读