将stderr重定向到日志记录

时间:2018-08-07 21:24:13

标签: python python-3.x pandas stderr bytestring

我知道这个问题已经问过几次了,但是我已经尝试实施了
我遇到的所有答案都采用了不同的解决方案,但都没有
在这种情况下正在帮助我(部分原因是我不了解什么是
在引擎盖下进行。

所以我正在利用from contextlib import redirect_stderr尝试重定向我的
错误消息到记录器。

my_log.write = lambda msg: my_log.warning(msg.decode('utf-8')) if msg != '\n' else None
input_file = '/file_path/file_name.csv'
with redirect_stderr(my_log):
     trial_df = pd.read_csv(input_file, low_memory=False, error_bad_lines=False)

这是我要做的部分。我希望read_csv的输出stderr转到我的
记录器,以及我键入它的方式,msg.decode()产生:
AttributeError: 'str' object has no attribute 'decode'

其背后的想法是记录哪些行带有额外的列。
当我取出.decode()时,我在日志中得到如下输出:
b'Skipping line 6: expected 32 fields, saw 34\nSkipping line 14: expected 32 fields, saw 34\n'
如果我使用encode(),我会得到:
b"b'Skipping line 6: expected 32 fields, saw 34\\nSkipping line 14: expected 32 fields, saw 34\\n'"

我什至尝试.replace('\ n','')等都没有用。如何解决这个问题,使输出为:

Skipping line 6: expected 32 fields, saw 34
Skipping line 14 expected 32 fields, saw 34

在记录器中?

0 个答案:

没有答案