我有去递归通过一些文件夹,在的UnicodeDecodeError“UTF-8”编解码器不能解码字节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
的方向,以查看错误何时开始,并且发现路径中的一些文件夹,我实际上想要使用它们,这些文件夹完全正常,有些返回错误,但是所有子目录都只有文件夹或者基本上具有相同的文件,所以我不知道错误来自何处或如何解决。
请帮忙。
错误出现在我使用外部软件包的行中,但软件包导入正常,代码正常,并且它在未出现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
请显示完整的错误信息和所有相关代码。 – DyZ
看看[问]并编辑你的问题,添加诸如你的实际代码(或者最好是[MCVE])的东西,你得到的确切例外,你得到的线路等。 – pvg
我把这个例子,但怀疑它会有帮助 –