我正在手动运行一个以 JSON 格式获取数据的 python 脚本。如何自动化这个脚本以每小时自动运行一次?
我在 Windows7 上工作。我可以使用任务调度程序之类的工具吗?如果可以使用,我需要在批处理文件中放入什么?
我正在手动运行一个以 JSON 格式获取数据的 python 脚本。如何自动化这个脚本以每小时自动运行一次?
我在 Windows7 上工作。我可以使用任务调度程序之类的工具吗?如果可以使用,我需要在批处理文件中放入什么?
我可以使用任务调度程序之类的工具吗?
是的。任何可以运行任意程序的工具都可以运行您的 Python 脚本。选择你最喜欢的那个。
如果我可以使用它,我需要在批处理文件中放入什么?
什么批处理文件?任务计划程序接受任何可以运行的东西,带有参数——一个 C 程序、一个 .NET 程序,甚至是一个带有与之关联的默认应用程序的文档。因此,没有理由需要批处理文件。使用C:\Python33\python.exe
(或任何适当的路径)作为您的可执行文件,并将脚本的路径(及其参数,如果有的话)作为参数。就像从命令行运行脚本一样。
有关一些简单示例,请参阅使用MSDN 中的任务计划程序,以及参考任务计划程序架构元素或任务计划程序脚本对象(取决于您是要在 XML 中创建计划,还是通过脚本接口创建计划)。
您想创建一个ExecAction
with Path
set to"C:\Python33\python.exe"
和Arguments
set to "C:\MyStuff\myscript.py"
,以及一个RepetitionPattern
with Interval
set to "PT1H"
。你应该能够从那里找出其余的。
正如 sr2222 在评论中指出的那样,您通常最终会频繁地调度任务,并且需要以编程方式控制它们的调度。如果你需要这个,你可以从 Python 控制 Task Scheduler 的脚本接口,或者在 Task Scheduler 之上构建一些东西,或者使用一个不同的工具,它更容易从 Python 获得并且有更多有用的在线示例,等等——但是当你到了这一点,退后一步,看看你是否过度使用操作系统任务调度。(如果您开始添加延迟或调整时间以确保每日foo1.py
作业在最近的每小时foo0.py
作业完成 5 分钟后才运行,那么您过度使用了操作系统任务调度——但这并不总是那么明显。)
我可以建议WinAutomation或AutoMate吗?这两个做完全相同的事情,除了 UI 有点不同。我更喜欢 WinAutomation,因为脚本更容易构建。
是的,您可以使用任务计划程序每小时运行脚本。
要通过批处理文件执行 python 脚本,请使用以下代码:
start path_to_python_exe path_to_python_file
例子:
start C:\Users\harshgoyal\AppData\Local\Continuum\Anaconda3\python.exe %UserProfile%\Documents\test_script.py
如果将 python 设置为 Window 的 Environment Window,那么您可以将语法简化为:
start python %UserProfile%\Documents\test_script.py
我通常做的是通过任务计划程序运行批处理文件一次,并在 python 脚本中每小时调用一个线程/计时器。