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

标签 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' codec can't decode byte 0xae in position 4607: invalid start byte

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

最佳答案

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

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

关于python - 获取文件的最后n行——解码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53879244/

相关文章:

python - 安装机器人框架时出错

c - 使用 TPL 在结构中序列化 wchar_t*

字节不在文件中的 Python Unicode 解码错误

python - Unicode编码错误: 'decimal' codec can't encode character u'\x00' in position 8: invalid decimal Unicode string

带有 nltk.wordnet.synsets 的 Python IF 语句

python - 在 Django/Gunicorn 应用程序中拥有持久(非守护进程)线程的危险?

python - 名称错误 : global name 'myExample2' is not defined # modules

python - 是否可以从 Windows 命令提示符运行 python 脚本并同时传递该脚本的参数?

python - 当通过不允许的方法(如 PUT、DELETE...)请求应用程序时,如何返回 json 输出?

python - 动态组装 Python 模块,动态导入