提问人:CiaranWelsh 提问时间:7/16/2016 最后编辑:vvvvvCiaranWelsh 更新时间:4/4/2023 访问量:17305
使用 FileHandler 的 mode='w' 参数时,记录到 python 文件不会覆盖文件
Logging to python file doesn't overwrite file when using the mode='w' argument to FileHandler
问:
我有一些代码可以在 Python 2.7 中设置日志(使用日志模块):
import os
import logging
logger=logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
log_filename=os.path.join(os.path.dirname(copasi_file),os.path.split(copasi_file)[1][:-4]+'_log.log')
handler=logging.FileHandler(log_filename,mode='w')
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug('debugging message')
这段代码有效,我正在获得输出,但是我打算使用此日志进行大量调试,因此我想在每次运行时覆盖日志文件。在文档中,说使用“FileHandlermode='w''”的关键字参数。然而,这是行不通的。谁能告诉我为什么?mode
. It doesn't specify precisely *which* mode to use for overwrite file each time but I think a reasonable assumption would be
答:
5赞
AndrewG
7/16/2016
#1
我对此不太熟悉,而且我没有真正在谷歌中看到任何突出的东西。您是否尝试过仅使用:
handler=logging.FileHandler(log_filename, 'w')
评论
0赞
CiaranWelsh
7/16/2016
谢谢,但这表现方式相同。
9赞
CiaranWelsh
7/16/2016
#2
问题在于,在启动新的 python shell 之前,该文件实际上不会被覆盖。
21赞
NutCracker
8/27/2018
#3
这为我解决了问题:
handler = logging.FileHandler(log_filename, 'w+')
评论
mode
a