【问题标题】:I scheduled a Python script in Windows Scheduler but the script doesn't work as it should我在 Windows Scheduler 中安排了一个 Python 脚本,但该脚本无法正常工作
【发布时间】:2019-05-21 21:22:09
【问题描述】:

我有一个简单的 Python 脚本,当我在 Jupyter Notebook 中启动它或将其转换为 .exe 后,它可以正常运行,但是当我通过 Windows 调度程序启动它时它不起作用(我尝试启动这两个 .py 文件和.exe)。我错过了什么?

背景:

我有一个简单的 3.7 Python 脚本,我想定期运行它。在转向更复杂的脚本之前,我正在使用简单的 Python 脚本测试该方法。

当我在 Jupyter 中启动它时,我的脚本运行良好,但在使用 Windows 调度程序时它不起作用。我所做的是,我在 Windows 调度程序中创建了一个基本任务,并设置了以下属性:

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

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

我想使用 Windows 调度程序解决问题,但我也愿意接受有关定期运行脚本的方法的建议。但是,我是一个非常基础的 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 调度程序。

【问题讨论】:

  • 你是通过anaconda安装python的吗?我有一个类似的脚本可以运行,可以分享给你
  • 这种日程安排很艰难。你可以看看调度库pypi.org/project/schedule,它处理得很好
  • 我不了解windows,但是在linux中如果你在写文件的时候没有指定绝对路径,那么路径会被解释为相对于你当前的目录。这也适用于 crontab(linux 的任务自动化工具),但由于不清楚 crontab 在运行脚本时“在哪里”这一事实而变得复杂。这是自动化任务的常见缺陷,至少在 linux 中是这样。我建议您搜索文件名。你可能会在意想不到的地方找到它。
  • 它适用于 Windows 7,因此设置环境变量的过程可能有些不同,但除此之外,我认为 my answer 中的另一个与 Windows 相关的问题可能是相关的。另请注意,您应该在写入的数据中添加一个换行符:file.write("Hello Word" + str(now) + "\n"),然后使用file.close()关闭文件。
  • open("testfile.txt","w") -- 这会在工作目录中创建文件,这取决于进程的运行方式。它不是“在 .ipynb 文件的同一文件夹中”。对于脚本目录,如果是冻结的可执行文件(即如果定义了sys.frozen),则使用sys.executable的目录,否则使用__file__的目录。

标签: python windows scheduler


【解决方案1】:

根据我的经验,Windows 任务计划程序不能很好地与 Python 配合使用。尝试使用以下内容创建 .bat 文件:

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

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

告诉任务计划程序运行这个批处理文件(没有其他参数)而不是 Python 脚本,并查看日志中的内容。要么它可以与批处理文件一起正常运行,要么您将获得更多信息来进行故障排除。

【讨论】:

    猜你喜欢
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2015-10-30
    • 2018-02-04
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多