Mic*_*ski 4 python windows logging scheduler
我有一个每天都在运行的程序。我想为它的每次运行创建一个日志。这是负责日志记录的代码片段:
logging.basicConfig(filename = 'log.txt', level = logging.DEBUG, format = '%(asctime)s - %(levelname)s - %(message)s')
logging.debug('Start of program') # example logging
Run Code Online (Sandbox Code Playgroud)
只要我通过 .py 文件或 .bat 文件(鼠标在文件资源管理器中单击)启动它,一切都运行良好。不幸的是,当我把它放在日程表上时,程序运行良好,但没有创建日志文件。
我尝试了多个调度程序设置,但问题似乎出在脚本代码中。
感谢反馈!
小智 5
我也想添加解决方案作为答案,因为这似乎是一个有点常见的问题,过去曾让我感到有些悲伤。
从 Windows 任务计划程序执行某些内容时,该进程的工作目录默认不是可执行文件的路径,而是其他目录。例如,当您的 Scheduler 操作调用时,C:\sample.py它不会执行C:\但C:\Windows\system32(在我的情况下)。
您可以通过添加一个计划任务来验证这一点,该任务调用一个简单的 Python/Batch 脚本,该脚本将活动工作目录保存到某个文件中,例如
import os
with open("C:\\cwd.txt", "w") as fh:
fh.write(os.getcwd())
Run Code Online (Sandbox Code Playgroud)
或这个
echo %cd% >> C:\cwd.txt
Run Code Online (Sandbox Code Playgroud)
这会干扰您的程序可能包含的任何相对路径,而且我怀疑它有一些我还无法确定的更微妙的问题。