有没有办法在Python控制台上记录自动生成的消息?

时间:2019-07-19 23:19:01

标签: python python-3.x

我正在使用pandas加载几乎没有坏行的csv文件。这意味着在几行中还有一些多余的逗号,这就是为什么熊猫无法加载​​它的原因。我觉得很好。我正在使用error_bad_lines=False忽略这些行。当大熊猫忽略了这些不良线条时,它会在控制台上显示如下消息:

b'Skipping line 3: expected 3 fields, saw 4\n

我想要的是能够加载数据,但将此跳过的行号记录在日志文件中。我经历了很多有关日志记录的教程,但是当熊猫在加载数据时跳过行号时,找不到找到记录此自动生成的消息的方法。

这是我用来加载文件的简单代码。

import pandas as pd
import os

def main():
    filename = "test_data3.csv"
    data= pd.read_csv(filename,error_bad_lines=False)
    print(data.head())


if __name__=="__main__":
    main()

这是我正在使用的示例数据

Col1,Col2,Col3
a,3,g4
b,4,s5,r
c,5,p9
f,6,v4,7
x,65,h5

如您所见,应该跳过第2行和第4行。但是它需要记录在日志文件中。

2 个答案:

答案 0 :(得分:4)

您可以使用上下文管理器临时拦截对double length = 10;的调用,并将消息写入文件:

sys.stderr.write

如果这不是您想要的,则可能需要在问题中添加更多信息。

答案 1 :(得分:1)

您可以使用将输出重定向到文件doubg中:

python script.py > out.txt