Python ldif3解析器和for循环中的异常

Python ldif3解析器和for循环中的异常,python,Python,从站点: 我有以下代码: from ldif3 import LDIFParser from pprint import pprint parser = LDIFParser(open('data.ldif', 'rb')) for dn, entry in parser.parse(): print('got entry record: %s' % dn) pprint(record) 现在,在读取我的文件data.ldif时,parser.parse()中出现异常。 问题

从站点:

我有以下代码:

from ldif3 import LDIFParser
from pprint import pprint

parser = LDIFParser(open('data.ldif', 'rb'))
for dn, entry in parser.parse():
    print('got entry record: %s' % dn)
    pprint(record)
现在,在读取我的文件
data.ldif
时,
parser.parse()
中出现异常。 问题是如何捕获此异常并允许循环转到下一个记录(继续)

回溯:

Traceback (most recent call last):
  File "ldif.py", line 16, in <module>
    for dn, entry in parser.parse():
  File "/home/dlubom/anaconda2/lib/python2.7/site-packages/ldif3.py", line 373, in parse
    yield self._parse_entry_record(block)
  File "/home/dlubom/anaconda2/lib/python2.7/site-packages/ldif3.py", line 346, in _parse_entry_record
    attr_type, attr_value = self._parse_attr(line)
  File "/home/dlubom/anaconda2/lib/python2.7/site-packages/ldif3.py", line 309, in _parse_attr
    return attr_type, attr_value.decode('utf8')
  File "/home/dlubom/anaconda2/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb3 in position 6: invalid start byte
回溯(最近一次呼叫最后一次):
文件“ldif.py”,第16行,在
对于dn,parser.parse()中的条目:
文件“/home/dlubom/anaconda2/lib/python2.7/site packages/ldif3.py”,第373行,在解析中
屈服自。\解析\条目\记录(块)
文件“/home/dlubom/anaconda2/lib/python2.7/site packages/ldif3.py”,第346行,在解析条目记录中
属性类型,属性值=self.\u解析\u属性(行)
文件“/home/dlubom/anaconda2/lib/python2.7/site packages/ldif3.py”,第309行,在
返回属性类型,属性值。解码('utf8')
文件“/home/dlubom/anaconda2/lib/python2.7/encodings/utf_8.py”,第16行,解码
返回编解码器.utf_8_解码(输入,错误,真)
UnicodeDecodeError:“utf8”编解码器无法解码位置6中的字节0xb3:无效的开始字节

文件
数据.ldif
可能不是utf8编码的。根据您可以在构造函数中设置编码:
LDIFParser(…,encoding=…)
Ok,但这并不能解决我的问题,可能还有其他异常。什么异常?在ldif库中还是在您的代码中?在ldif库中,在parser.parse()中,没有
data.ldif
我无法重现问题。您是否将编码设置为
None
?文件
data.ldif
可能不是utf8编码的。根据您可以在构造函数中设置编码:
LDIFParser(…,encoding=…)
Ok,但这并不能解决我的问题,可能还有其他异常。什么异常?在ldif库中还是在您的代码中?在ldif库中,在parser.parse()中,没有
data.ldif
我无法重现问题。您是否将编码设置为“无”?