Python 在csv.reader中获取原始行?

Python 在csv.reader中获取原始行?,python,csv,Python,Csv,我正在围绕csv.reader制作一个包装器,即使遇到格式错误的行(即,有空字节的行),它也能让读取器继续工作。它看起来像: def error_ignoring_csv_reader(csv_reader): while True: try: yield next(csv_reader) except csv.Error, e: logger.warning("Got badly formed line w

我正在围绕
csv.reader
制作一个包装器,即使遇到格式错误的行(即,有空字节的行),它也能让读取器继续工作。它看起来像:

def error_ignoring_csv_reader(csv_reader):
    while True:
        try:
            yield next(csv_reader)
        except csv.Error, e:
            logger.warning("Got badly formed line with error [%s]" % e)

我真正想做的是将有问题的原始行作为日志警告“格式错误的行
[实际的\u raw\u line]
”的一部分,但仔细阅读csv的源代码,我没有找到任何访问它的方法。是否可以访问CSV中的原始、未处理的当前行?Reader?< /P> < P>。虽然我不知道直接访问CSV.Reader中的原始、未处理的当前行的方法,但这些对象确实提供了一个可以为获取当前行提供基础的属性。 csv.reader的csvfile参数“可以是支持迭代器协议并在每次调用其next()方法时返回字符串的任何对象”,因此它不必是普通文件。参考文档特别提到字符串列表作为选项

如果可以先将文件读入列表,则可以使用line_num属性在出现错误时索引到列表中。或者您可以返回并重新读取文件中的行,以找到有问题的行

或者,您可以构建一个自定义迭代器,该迭代器从文件中读取数据,并记住读取的最后一行。(使用最后一种方法,您的代码将创建特殊的迭代器并将其传递给csv.reader。在这种情况下,您甚至不需要使用line_num属性。)