Python 如何记录熊猫跳过的坏行

Python 如何记录熊猫跳过的坏行,python,pandas,data-cleaning,Python,Pandas,Data Cleaning,我正在读一个带有熊猫的CSV文件 error_bad_lines=False 当遇到错误行时,将打印警告。但是,我想保留一份所有错误行号的记录,以便输入到另一个程序中。有没有简单的方法 我想用一个 chunksize=1 并捕获应为遇到的每条错误行抛出的CParserError。当我这样做时,虽然没有为错误行抛出CParserError,所以我无法捕捉它们。警告会打印在标准错误通道中。通过重定向sys.stderr输出,可以将它们捕获到文件中 import sys import pandas

我正在读一个带有熊猫的CSV文件

error_bad_lines=False
当遇到错误行时,将打印警告。但是,我想保留一份所有错误行号的记录,以便输入到另一个程序中。有没有简单的方法

我想用一个

chunksize=1

并捕获应为遇到的每条错误行抛出的CParserError。当我这样做时,虽然没有为错误行抛出CParserError,所以我无法捕捉它们。

警告会打印在标准错误通道中。通过重定向
sys.stderr
输出,可以将它们捕获到文件中

import sys
import pandas as pd

with open('bad_lines.txt', 'w') as fp:
    sys.stderr = fp
    pd.read_csv('my_data.csv', error_bad_lines=False)

我试过了,但没有成功。我不认为这些实际上是警告,而是打印到控制台上的文本。有什么见解吗?这很奇怪,这在我的Windows系统上确实适用。它看起来像印刷文本;但是它可以通过
sys.stderr
流捕获,至少在Windows上是这样的。pandas/parsers.py的2600-2602行是输出行产生的地方
base='Skipping line{row_num}:'.format(row_num=row_num)
sys.stderr.write(base+msg+'\n')
。所以它肯定是在写
sys.stderr
。请看这里的文件:谢谢你,@James。出于某种原因,我很难在版本19中找到相同的行集。我想是时候更新了。同时,我发现了一个解决方法,可以重定向
sys.stdout
。不过这并不漂亮,所以升级是一个更好的解决方案。