UnicodeDecode错误'utf8'编解码器无法解码字节0xb0



我有一个代码,该代码通过某些文件夹递归,以

的方式进行
for root, subFolders, files in os.walk(str(rootdir)):

运行程序我找到了错误UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 37: invalid start byte

已更改了rootdir的方向,以查看错误何时启动并在我真正想使用的路径中找到了一些文件夹,这些文件夹完全很好,有些返回错误,但是所有的subdirectories要么只有文件夹或基本上具有相同的文件,所以我不知道错误来自何处或如何解决。

请帮助。

错误出现在我使用外部包装的行中,但该软件包的导入良好,代码很好,并且在不出现Unicode错误时起作用。线代码在文件夹中导入一个.xml文件,该文件是否存在问题?(不应该因为它们都是用相同程序而创建的,并且如果一个错误,那么所有这些都应该是错误的,而不是少数(

编辑:要实际测试我的代码,您必须安装pymatgen(可以使用PIP(并获取vasprun.xml文件。高度无探门,因此为什么我不在一开始就把它放在。

代码(带错误的最后一行(

from pymatgen.electronic_structure.dos import CompleteDos, add_densities, Dos
from pymatgen.electronic_structure.core import Spin, Orbital
from pymatgen.io.vasp.outputs import Vasprun, Procar
vasprun = Vasprun(root+"/vasprun.xml")

错误:

Traceback (most recent call last):
  File "an.py", line 196, in <module>
vasprun = Vasprun(root+"/vasprun.xml")
  File "/usr/lib64/python2.7/site-packages/pymatgen/io/vasp/outputs.py", line 383, in __init__
self.update_potcar_spec(parse_potcar_file)
  File "/usr/lib64/python2.7/site-packages/pymatgen/io/vasp/outputs.py", line 829, in update_potcar_spec
potcar = get_potcar_in_path(os.path.split(self.filename)[0])
  File "/usr/lib64/python2.7/site-packages/pymatgen/io/vasp/outputs.py", line 813, in get_potcar_in_path
pc = Potcar.from_file(os.path.join(p, fn))
  File "/usr/lib64/python2.7/site-packages/pymatgen/io/vasp/inputs.py", line 1704, in from_file
fdata = reader.read()
  File "/usr/lib64/python2.7/codecs.py", line 314, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 37: invalid start byte

该文件显然未编码UTF-8。如果它具有指定UTF-8(或未指定编码(的XML声明,则需要替换它。如果没有XML声明,则应尝试添加一个声明。正确的XML声明需要指定实际字符集,可能是<?xml version="1.0" encoding="iso-8859-1" ?>,或者可能是其他ISO编码。

最新更新