Как исправить "UnicodeDecodeError: 'utf-8'" при загрузке файлов трассировки - PullRequest
0 голосов
/ 02 октября 2019

Я попытался реализовать базовый инструмент моделирования трассировки, и первым делом нужно загрузить трассировки (файлы .xz), которые доступны в http://hpca23.cse.tamu.edu/champsim-traces/speccpu/

import csv

with open('400.perlbench-41B.champsimtrace.xz', encoding="utf-8") as csvfile:
    csvreader = csv.reader(csvfile, delimiter=",")

    for row in csvreader:
        print(": ".join(row))

Я ожидаю загрузить эти файлы, но этообнаружил UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xfd в позиции 0: недопустимый начальный байт. Нужно ли предварительно обрабатывать эти следы?

1 Ответ

0 голосов
/ 02 октября 2019

.xz - это файл сжатия данных без потерь, созданный LZMA, поэтому вам необходимо сначала распаковать файл, как показано ниже.

import lzma

with lzma.open('400.perlbench-41B.champsimtrace.xz') as lzmaFile:
  .
  .
  .
  .
  .

После этого вы можете свободно обрабатывать его. Попробуйте print(lzmaFile.read()).

...