Получить последние n строк файла - ошибка декодирования - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть файл 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» не может декодировать байт 0xae в позиции 4607: неверный стартовый байт

Даже если я сделаю .decode('utf-16'), это выдаст мне ошибку.Как правильно получить последние 100 строк файла из команды tail?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

То, что работало, было добавить более общую кодировку Unicode в методе декодирования:

> s = subprocess.check_output(['tail', '-%s' % str(n), file]).decode('unicode_escape')
0 голосов
/ 21 декабря 2018

Вы можете добавить кодировку = "437" или кодировку = "850".

...