gpt4 book ai didi

python - 登录 csv 文件的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 18:24:29 26 4
gpt4 key购买 nike

我想以格式化的形式记录发送到繁忙的 http 服务器的每个请求的一些信息,使用日志模块会创建一些我不想创建的东西:

[I 131104 15:31:29 Sys:34]

我想到了 csv 格式,但我不知道如何自定义它,python 有 csv 模块,但请阅读手册

import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(someiterable)

因为每次打开和关闭一个文件,我担心这样会降低整个服务器的性能,我该怎么办?

最佳答案

只需使用 python 的 logging模块。

您可以按照自己的方式调整输出;看看Changing the format of displayed messages :

To change the format which is used to display messages, you need to specify the format you want to use:

import logging
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
logging.debug('This message should appear on the console')
logging.info('So should this')
logging.warning('And this, too')

Formatters :

Formatter objects configure the final order, structure, and contents of the log message.

您将在此处找到可以使用的属性列表:LogRecord attributes .


如果您想生成有效的 csv 文件,请使用 python 的 csv module ,也是。

这是一个简单的例子:

import logging
import csv
import io

class CsvFormatter(logging.Formatter):
def __init__(self):
super().__init__()
self.output = io.StringIO()
self.writer = csv.writer(self.output, quoting=csv.QUOTE_ALL)

def format(self, record):
self.writer.writerow([record.levelname, record.msg])
data = self.output.getvalue()
self.output.truncate(0)
self.output.seek(0)
return data.strip()

logging.basicConfig(level=logging.DEBUG)

logger = logging.getLogger(__name__)
logging.root.handlers[0].setFormatter(CsvFormatter())

logger.debug('This message should appear on the console')
logger.info('So should "this", and it\'s using quoting...')
logger.warning('And this, too')

输出:

"DEBUG","This message should appear on the console"
"INFO","So should ""this"", and it's using quoting..."
"WARNING","And this, too"

关于python - 登录 csv 文件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com