自动化 Python 脚本

3
我手动运行一个Python脚本来获取JSON格式的数据。如何自动化设置该脚本每小时运行一次?
我在Windows7上工作,可以使用任务计划程序等工具吗?如果可以使用,我需要在批处理文件中添加什么内容?

你使用的是Python 3.x还是2.7?更重要的是,Python版本是否与你的问题有关? - abarnert
3个回答

6

我可以使用像任务计划程序这样的工具吗?

可以。任何可以运行任意程序的工具都可以运行你的Python脚本。选择你最喜欢的那个。

如果我可以使用它,我需要在批处理文件中放什么?

什么批处理文件?任务计划程序接受任何可以运行的东西,带有参数-一个C程序,一个.NET程序,甚至是一个默认关联应用程序的文档。因此,你不需要批处理文件。将C:\Python33\python.exe(或适当路径)用作可执行文件,将你的脚本路径(及其参数,如果有)用作参数。就像你从命令行运行脚本一样。

请参阅MSDN中的使用任务计划程序了解一些简单的示例,以及任务计划程序模式元素任务计划程序脚本对象以供参考(取决于你想要通过XML创建计划还是通过脚本接口)。

你需要创建一个ExecAction,将Path设置为"C:\Python33\python.exe",将Arguments设置为"C:\MyStuff\myscript.py",并创建一个RepetitionPattern,将Interval设置为"PT1H"。从那里开始,你应该能够解决其余的问题。

正如评论中的sr2222所指出的那样,通常你最终会频繁地安排任务,并需要以编程方式控制它们的调度。如果需要,你可以从Python控制任务计划程序的脚本接口,或构建一些基于任务计划程序的东西,或使用一个更容易从Python获取并具有更多在线帮助示例的不同工具等-但当你到达这个点时,请退后一步,看看是否过度使用操作系统任务调度。(如果你开始添加延迟或调整时间,以确保每天的foo1.py作业直到最近一个小时的foo0.py完成其作业之后5分钟才运行,那么你就过度使用了操作系统任务调度-但这并不总是那么明显。)


不错的回答,但是你也可以设置任务计划程序来运行批处理文件。 - Hannele
1
如果这只是一次性的需求,那么这很好,但如果这是需要管理的许多脚本中的第一个,特别是如果它们将相互关联并相互调用,那么研究一下稍微厚一点的Python层来管理定时任务,而不是或者在任务计划程序下面几乎肯定会在未来节省头疼。"让我只是使用操作系统安排这个任务",通常是通过操作系统相互调用的拼凑和脆弱脚本的兔子洞的第一步。 - Silas Ray
2
@Hannele:当然,你可以设置运行一个C程序,该程序运行批处理文件来下载cygwin并运行bash脚本,从而运行你的Python脚本...但是为什么?如果你想要运行Python脚本,直接运行Python脚本即可。 - abarnert
@abarnert我同意运行Python脚本更有意义,但我也觉得“任务计划程序接受具有参数的可执行文件,而不是批处理文件”有点误导。或许可以简单地重新表述为“任何带参数的可执行文件,而不仅仅是批处理文件”?我很抱歉,我有点挑剔。 - Hannele

0

我可以建议使用WinAutomationAutoMate。这两个工具实现的功能是一样的,只是界面略有不同。我更喜欢WinAutomation,因为它的脚本编写起来更容易。


0

是的,您可以使用任务计划程序按小时运行脚本。

要通过批处理文件执行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设置为Windows环境窗口,则可以将语法简化为:
start python %UserProfile%\Documents\test_script.py

通常我会通过任务计划程序运行批处理文件,并在Python脚本中每小时调用一个线程/定时器。

class threading.Timer(interval, function, args=None, kwargs=None)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接