Windows任务调度器和python日志模块
我有一个每天都在运行的程序。我想为每次运行创建一个日志。以下是负责日志记录的代码片段:Windows任务调度器和python日志模块,python,windows,logging,scheduler,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 只要我通过.py文件或.bat文件启动它(在文件资源管理器中单击鼠
logging.basicConfig(filename = 'log.txt', level = logging.DEBUG, format = '%(asctime)s - %(levelname)s - %(message)s')
logging.debug('Start of program') # example logging
只要我通过.py文件或.bat文件启动它(在文件资源管理器中单击鼠标),一切都可以正常运行。不幸的是,当我把它放在时间表上时,程序运行得很好,但是没有创建日志文件
我尝试了多种调度程序设置,但问题似乎出在脚本的代码中
感谢您的反馈 我也想添加这个解决方案作为答案,因为这似乎是一个有点常见的问题,在过去给我带来了一些悲伤 当从Windows任务调度器执行某项任务时,该进程的工作目录默认不是可执行文件的路径,而是其他某个目录。例如,当调度程序操作调用
C:\sample.py
时,这不会在C:\
中执行,而是在C:\Windows\system32
中执行(在我的例子中)
您可以通过添加一个调度任务来验证这一点,该任务调用一个简单的Python/批处理脚本,该脚本将active working directory保存到某个文件中,例如
import os
with open("C:\\cwd.txt", "w") as fh:
fh.write(os.getcwd())
还是这个
echo %cd% >> C:\cwd.txt
这会弄乱你的程序可能包含的任何相对路径,而且,我怀疑,它还有一些更微妙的问题,我还无法确定
可以通过显式设置操作的可选“开始位置”路径来避免问题:
执行脚本的用户是否拥有日志文件位置的权限?您是否为该操作指定了一个明确的“开始位置”文件夹?这是我过去在调度python脚本时遇到的两个问题。问题已解决:)非常感谢!在我指定了开始位置后,一切都进行得非常顺利!调度器的另一个想法。如果将Start in目录更改为类似“C:\Scripts\My\u Script”,请确保将参数从“C:\Scripts\My\u Script\python\u Script.py”更改为“python\u Script.py”。