我正在编写一款研究工具,最近我从使用“print”语句转为使用Python内置的日志记录功能。我认为这样做可以让用户选择将输出转储到文件,而不仅仅是屏幕上。
但是这只会将内容转储到文件中而不是屏幕上。
基本上,我的问题可以归结为:是否有一种方法可以利用我现有的记录器,而无需为subprocess.call构建另一个文件处理程序?(也许通过重定向输出到记录器?)或者,鉴于当前的设置,这是不可能的吗?如果是后者,我该如何改进设置?
(哦,还有,如果日志记录是“实时”的话,那就太好了,这样从可执行文件接收到的消息就会被记录。)
感谢任何帮助! :)
到目前为止还不错。我的Python代码部分使用“logger.info”和“logger.error”将输出同时转储到屏幕和文件中,“logger”是模块级别的日志记录器,这部分很好地发挥了作用。
然而,在几个地方,我使用“subprocess.call”通过shell运行可执行文件。因此,在整个代码中,我有像下面这样的代码:
proc = subprocess.call(command)
这个命令的输出将如往常一样打印到屏幕上,但它不会转储到用户指定的文件中。
一种可能的选项是打开到文件的管道:
proc = subprocess.call(command, stdout=f, stderr=subprocess.OUTPUT)
但是这只会将内容转储到文件中而不是屏幕上。
基本上,我的问题可以归结为:是否有一种方法可以利用我现有的记录器,而无需为subprocess.call构建另一个文件处理程序?(也许通过重定向输出到记录器?)或者,鉴于当前的设置,这是不可能的吗?如果是后者,我该如何改进设置?
(哦,还有,如果日志记录是“实时”的话,那就太好了,这样从可执行文件接收到的消息就会被记录。)
感谢任何帮助! :)