我在Windows Scheduler中安排了Python脚本,但是该脚本无法正常运行

时间:2019-05-21 21:22:09

标签: python windows scheduler

我有一个简单的Python脚本,当我在Jupyter Notebook中启动它或将其转换为.exe之后,它可以正确运行,但是当我通过Windows Scheduler启动它时却无法正常工作(我尝试同时启动.py文件和和.exe)。我想念什么?

背景:

我有一个简单的3.7 Python脚本,希望定期运行。在移到更复杂的脚本之前,我正在用一个简单的Python脚本测试该方法。

当我在Jupyter中启动脚本时,我拥有的脚本运行良好,但是在使用Windows Scheduler时却无法正常运行。我所做的是,我在Windows Scheduler中创建了一个基本任务,并设置了以下属性:

  • 常规:仅在用户登录时运行;
  • 触发:每天;
  • 行动:我尝试了几种输入组合。我尝试过的最新组合是在“程序/脚本” C:\ Pythondata \ dist \ test.exe中并且没有可选参数;
  • 条件和设置:我保留了默认选项。

当我单击Windows Scheduler中的RUN任务时,类似命令的黑色背景窗口会显示几秒钟,然后消失,但是什么也没有发生,并且输出txt文件也没有被编辑。我没有收到错误消息,当我检查任务的“历史记录”时,它显示“任务已完成”或“任务注册已更新”。基本上,似乎没有错误,但是什么也没发生。

我想使用Windows Scheduler解决此问题,但是我愿意就定期运行脚本的方式提出建议。但是,我是一个非常基本的Python用户,可能无法做更复杂的事情。我的系统是Windows 10 Home,Python 3.7。

我正在使用的简单代码:

import datetime
now = datetime.datetime.now()

file = open("testfile.txt","w")

file.write("Hello Word" + str(now))
print("done")

注意:该脚本将日期戳写入.ipynb文件同一文件夹中的文本文件中。我还使用pyinstaller将文件转换为.exe。在两种情况下,脚本都可以正常运行。但是,它不适用于Windows Scheduler。

1 个答案:

答案 0 :(得分:0)

以我的经验,Windows Task Scheduler在Python中不能很好地发挥作用。尝试使用以下命令创建.bat文件:

cmd full\path\to\python.exe "full\path\to\script.py" > output.log 2>&1

这是一个批处理文件,它将打开cmd.exe,并在python可执行文件上执行脚本。然后它将STDOUT和STDERR重定向到文件,以便您可以查看出了什么问题。

告诉Task Scheduler运行该批处理文件(没有其他参数),而不是运行Python脚本,然后查看日志内容。要么可以与批处理文件一起正常运行,要么可以获取更多信息来进行故障排除。