如何按计划执行python脚本?

时间:2015-06-14 23:16:12

标签: python automation

我的机器上有两个Python scripts我希望在特定时间段内每天执行两次StyleBundle。如何自动执行此任务?由于我将离开家,因此我的计算机暂时离开,我想将它们上传到一个站点,并在那里自动执行而不需要我做任何事情。

我该怎么做?

3 个答案:

答案 0 :(得分:13)

如果您使用的是Linux计算机,则可以使用cron。 Cron是一个系统守护程序,用于在特定时间执行特定任务。

cron的工作原理是crontab,这是一个文本文件,其中包含要在指定时间运行的命令列表。它遵循特定格式,可在man 5 crontab

中详细说明

crontab的格式

每个部分用空格分隔,最后一部分有一个或多个空格。第1-5节中不允许有空格,仅在它们之间。第1-5节用于指示您希望执行任务的时间和频率。这是一个cron工作的布局:

分钟(0-59),小时(0-23,0 =午夜),白天(1-31),月(1-12),工作日(0-6,0 =星期天),命令

01 04 1 1 1 /usr/bin/somedirectory/somecommand

上面的例子将在1月1日上午4:01和1月的每个星期一运行/ usr / bin / somedirectory / somecommand。可以使用星号(*),以便使用时间段的每个实例(每小时,每个工作日,每月等)。代码:

01 04 * * * /usr/bin/somedirectory/somecommand

以上示例将在每个月的每一天凌晨4:01运行/ usr / bin / somedirectory / somecommand。

逗号分隔值可用于在一段时间内运行特定命令的多个实例。划线分隔值可用于连续运行命令。代码:

01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand

以上示例将在每年1月和6月1日至15日凌晨4:00和凌晨5:00的01和31日运行/usr/bin/somedirectory/somecommand

" / usr / bin / somedirectory / somecommand"上面示例中的文本表示将在指定时间运行的任务。建议您使用所需命令的完整路径,如上例所示。在终端中输入 which somecommand ,以查找 somecommand 的完整路径。 crontab将在正确编辑和保存后立即开始运行。

您可能希望每个时间单元运行一些脚本。例如,如果您想每10分钟运行一次,请使用以下crontab条目(在可被10:0,10,20,30等整除的几分钟内运行)

*/10 * * * * /usr/bin/somedirectory/somecommand

这也相当于更麻烦的

0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand

答案 1 :(得分:4)

在Windows中,我提出了两种解决方案。

第一个选项:创建一个.bat文件。

第1步

创建.bat文件以指示要运行的命令以及将要执行的脚本文件,例如:

start C:\Users\userX\Python.exe C:\Users\userX\PycharmProjects\Automation_tasks\create_workbook.py

第2步

打开任务计划程序并单击任务计划程序库以查看当前执行的任务。单击“创建任务”选项。

Main window Task Scheduler

第3步

在“常规”选项卡中,输入新任务的名称并单击选项Run whether user is logged on or not,选中Run with highest privileges选项,并确保设置适当的操作系统版本(在我的情况下,我选择Windows 7, Windows Server 2008 R2

High privileges

第4步

在“操作”选项卡中,单击“新建”按钮,然后键入以下内容:

程序/脚本中,您需要查找任务计划程序将调用以运行.bat文件的Powershell路径。就我而言,我的Powershell路径是: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

添加参数(可选)中,您需要键入将由Powershell执行的文件的路径。就我而言,路径是:

C:\Users\userX\Desktop\run_the_bat_file.bat

开始(可选)中,您需要输入文件的路径但不包含.bat文件的名称,即:

C:\Users\userX\Desktop\

Configure the settings for Powershell

第5步

单击“触发器”选项卡,然后选择执行此任务的频率。

Frequency of the task to be executed

第6步

最后,通过从任务计划程序库中选择它并单击“运行”选项来测试您的任务,看它是否真的有效。

Test your task

第二个选项:使用任务计划程序

运行.py文件

第1步

打开任务计划程序并单击任务计划程序库以查看当前执行的任务。单击“创建任务”选项。

Main window Task Scheduler

第2步

在“常规”选项卡中,输入新任务的名称并单击选项Run whether user is logged on or not,选中Run with highest privileges选项,并确保设置适当的操作系统版本(在我的情况下,我选择Windows 7, Windows Server 2008 R2

High privileges

第3步

在“操作”选项卡中,单击“新建”按钮,然后键入以下内容:

程序/脚本中,您需要查找任务计划程序将调用以运行python脚本的Python.exe路径。就我而言,我的Python.exe路径是: C:\Users\userX\python.exe

添加参数(可选)中,您需要键入您的python脚本的名称。就我而言,路径是:

Permissions_dump.py

开始(可选)中,您需要键入文件的路径但不包含python脚本的名称,即:

C:\Users\userX\PycharmProjects\1099_vendors_costs

Python configuration

第4步

单击“触发器”选项卡,然后选择执行此任务的频率。

Frequency of the task to be executed

第5步

最后,通过从任务计划程序库中选择它并单击“运行”选项来测试您的任务,看它是否真的有效。

Test your task

参考文献:

  1. https://gis.stackexchange.com/questions/140110/running-python-script-in-task-scheduler-script-will-not-run?newreg=603bcdbc381b41a283e5d8d0561b835e
  2. https://www.youtube.com/watch?v=oJ4nktysxnE
  3. https://www.youtube.com/watch?v=n2Cr_YRQk7o

答案 2 :(得分:1)

如果您使用的是OSX,那么launchd是安排任务的首选方式。有一个名为launchctl的针对launchd的OSX CLI,但是如果您更喜欢GUI,我首选的是launchcontrol