首页 > 解决方案 > 加载跟踪文件时如何修复“UnicodeDecodeError:'utf-8'”

问题描述

我尝试实现一个基本的跟踪建模器,第一件事是加载跟踪(.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' codec can't decode byte 0xfd in position 0: invalid start byte。我需要对这些痕迹做一些预处理吗?

标签: pythonpython-3.xutf-8traceprefetch

解决方案


.xz 文件是 LZMA 的无损数据压缩文件,因此您需要先解压缩文件,如下面的代码。

import lzma

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

之后,您可以自由处理它。试试print(lzmaFile.read())


推荐阅读