UnicodeDecodeError“utf8”编解码器无法解码字节0xb0

2024-05-08 04:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码递归地遍历一些文件夹

for root, subFolders, files in os.walk(str(rootdir)):

运行程序时我发现错误UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 37: invalid start byte。在

更改了rootdir的方向,查看错误何时开始,并在我实际想要使用的路径中找到了一些完全正确的文件夹和一些返回错误的文件夹,但问题是所有子目录要么只有文件夹,要么有基本相同的文件,所以我不知道错误是从哪里来的,也不知道如何修正它。在

请帮忙。在

错误出现在我使用外部包的行中,但该包导入良好,代码正常,并且在unicode错误未出现时正常工作。行代码在文件夹中导入了一个.xml文件,该文件是有问题的文件吗?(不应该,因为它们都是用同一个程序创建的,如果其中一个是错误的,那么所有的都应该是错误的,而不是少数)

编辑:要真正测试我的代码,您必须安装pymatgen(可以使用pip)并获得一个vasprun.xml文件。很难解释,所以我没有把它放在开头。在

代码(出现错误的最后一行)

^{pr2}$

错误:

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

Tags: 文件代码inpy文件夹usr错误line
1条回答
网友
1楼 · 发布于 2024-05-08 04:32:35

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

相关问题 更多 >