Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python UnicodeDecodeError';utf8';编解码器可以';t解码字节0xb0_Python - Fatal编程技术网

Python UnicodeDecodeError';utf8';编解码器可以';t解码字节0xb0

Python UnicodeDecodeError';utf8';编解码器可以';t解码字节0xb0,python,Python,我有一个递归遍历一些文件夹的代码 for root, subFolders, files in os.walk(str(rootdir)): 运行程序时,我发现错误UnicodeDecodeError:“utf8”编解码器无法解码位置37中的字节0xb0:无效的开始字节 已经更改了rootdir的方向,以查看错误何时开始,并且在我实际想要使用的路径中找到了一些完全正确的文件夹,还有一些返回错误,但问题是所有子目录要么只有文件夹,要么基本上有相同的文件,因此,我不知道错误来自何处,也不知道如何修

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

for root, subFolders, files in os.walk(str(rootdir)):
运行程序时,我发现错误
UnicodeDecodeError:“utf8”编解码器无法解码位置37中的字节0xb0:无效的开始字节

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

请帮忙

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

编辑:要真正测试我的代码,您必须安装pymatgen(您可以使用pip)并获得一个
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
回溯(最近一次呼叫最后一次):
文件“an.py”,第196行,在
vasprun=vasprun(root+“/vasprun.xml”)
文件“/usr/lib64/python2.7/site packages/pymatgen/io/vasp/outputs.py”,第383行,在__
self.update\u potcar\u spec(解析\u potcar\u文件)
文件“/usr/lib64/python2.7/site packages/pymatgen/io/vasp/outputs.py”,第829行,在更新\u potcar\u规范中
potcar=获取路径中的potcar(os.path.split(self.filename)[0])
文件“/usr/lib64/python2.7/site packages/pymatgen/io/vasp/outputs.py”,第813行,在get\u potcar\u in\u路径中
pc=Potcar.from_文件(os.path.join(p,fn))
文件“/usr/lib64/python2.7/site packages/pymatgen/io/vasp/inputs.py”,第1704行,在from_文件中
fdata=reader.read()
文件“/usr/lib64/python2.7/codecs.py”,第314行,解码中
(结果,消耗)=自身缓冲区解码(数据,自身错误,最终)
UnicodeDecodeError:“utf8”编解码器无法解码位置37中的字节0xb0:无效的开始字节

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

请显示整个错误消息和所有相关代码。查看并编辑您的问题,以添加实际代码(最好是A)之类的内容,即您得到的确切异常,我举了一个例子,但怀疑它是否有用(看起来不像)。更不可能的是,任何人都能帮助你,而你却不告诉他们你的问题的背景和如何重现它。它说
,我可以通过替换编码行将econding更改为UTF-8吗?我尝试通过替换编码行将其更改为UTF-8,但错误仍然出现。显然,有人试图将文件解码为utf8,而不是utf8。据我所见,它是“/usr/lib64/python2.7/site packages/pymatgen/io/vasp/inputs.py”中使用的
reader
对象
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