2013-01-31 105 views
0

我正在手动运行一个以JSON格式提取数据的python脚本。如何将该脚本自动运行为每小时自动运行?自动化Python脚本

我正在使用Windows7.Can我使用的工具,如任务调度程序?如果我可以使用它,我需要在批处理文件中放什么?

+0

你使用Python 3.x或2.7?更重要的是,Python版本是否与你的问题有关? – abarnert

回答

4

我可以使用任务调度程序等工具吗?

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

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

什么批处理文件? Task Scheduler可以运行任何可以运行的参数 - 一个C程序,一个.NET程序,甚至一个默认应用程序关联的文档。所以,没有理由需要批处理文件。使用C:\Python33\python.exe(或任何适当的路径)作为可执行文件,并将脚本的路径(及其参数,如果有的话)作为参数。就像从命令行运行脚本一样。

供参考(取决于你是否愿意,或通过脚本接口来创建XML的时间表)请参阅MSDN Using the Task Scheduler对于一些简单的例子,Task Scheduler Schema ElementsTask Scheduler Scripting Objects

你想创建一个ExecActionPath设置为"C:\Python33\python.exe"Arguments设置为"C:\MyStuff\myscript.py",并与Interval一个RepetitionPattern设置为"PT1H"。你应该能够从那里弄清楚其余的。

正如sr2222在评论中指出的那样,经常会经常调度任务,需要以编程方式控制其调度。如果你需要这个,你可以从Python控制Task Scheduler的脚本接口,或者在Task Scheduler的基础上构建一些东西,或者使用一个更容易从Python获得的不同工具,并且在线有更多有用的例子等。您可以回到这一点,退一步看看是否过度使用操作系统任务调度。 (如果您开始添加延迟或调整时间以确保每天的作业从未运行,直到最近一小时的foo0.py完成作业之后的5分钟,您就会过度使用操作系统任务调度 - 但并不总是那么明显。)

+0

好的答案,但你*可以*设置任务计划程序来为你运行批处理文件。 – Hannele

+1

如果这是一次性需求,这是好事,但如果这是需要管理的许多脚本中的第一个,尤其是如果它们要相互关联并互相呼叫,则寻找稍微厚一些的层的Python来管理预定的任务,而不是Task Scheduler,或者在Task Scheduler的下面,几乎肯定会在未来最终节省头痛。 “让我只用OS安排这个任务”,通常是通过操作系统相互调用的偷偷摸摸和脆弱的脚本的第一步。 –

+2

@Hannele:当然,你可以设置它运行一个C程序,该程序运行一个批处理文件,下载cygwin并运行一个运行Python脚本的bash脚本......但是为什么?如果您想运行Python脚本,请运行Python脚本。 – abarnert

0

我可以建议WinAutomationAutoMate。这两个人完全一样,除了UI有点不同之外。我更喜欢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 

如果蟒蛇被设置为窗口的环境窗口,那么你可以语法减少:

start python %UserProfile%\Documents\test_script.py 

我一般都通过任务计划和t的范围内运行该批处理文件一次他的python脚本我每小时调用一个线程/定时器。

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