如何使用cron任务运行Python文件

53

你好,我创建了一个名为file_example.py的Python文件。

该文件将输出Sensex值。

假设在Linux系统上该文件的路径为/Desktop/downloads/file_example.py

我通常会使用python file_example.py运行该文件。

但我想设置一个cron job来每2分钟运行位于上述路径的Python文件。

请问有谁知道如何做到这一点吗?

编辑后的代码:

我已编辑了代码,并创建了一个名为test.sh的bash脚本,如下所示。

#!/bin/bash 
cd /Desktop/downloads/file_example.py
python file_example.py 2>log.txt 
当我运行上述文件时,会显示以下错误:
sh-4.2$ python test.sh
  File "test.sh", line 3
    python test.py 2>log.txt 
              ^
SyntaxError: invalid syntax

1
当您将调用添加到crontab时,它会执行什么操作?有什么问题没有解决? - John3136
@John3136:crontab:安装新的crontab "/tmp/crontab.TdDFOh":1:错误的分钟数,crontab文件中存在错误,无法安装。您想重试相同的编辑吗? - Shiva Krishna Bavandla
当我尝试在cron表中执行以下命令时,它显示了上述错误:/2 * * * * /Desktop/downloads/file_example.py - Shiva Krishna Bavandla
2个回答

60

假设您使用的是Unix操作系统,您可以按以下步骤执行。

使用命令编辑crontab文件。

crontab -e

添加一行类似于下面的代码

*/2 * * * * /Desktop/downloads/file_example.py

这可以用于运行其他脚本,只需使用所需脚本的路径,例如:

*/2 * * * * /path/to/script/to/run.sh

下面是时间安排的解释(在数字前面添加星号和斜杠,以在每n个时间步骤(在本例中为每2分钟)运行)

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

只要在文件中包含shebang行,例如#!/usr/bin/sh,您可以以完全相同的方式运行它们。 - olly_uk
1
请查看http://en.wikipedia.org/wiki/Shebang_%28Unix%29,了解有关shebang行的解释。 - olly_uk
1
非常感谢。通常我们会使用“python”命令来运行文件,但在上面的示例中直接给出了路径而没有命令,它是否会自动采用该命令? - Shiva Krishna Bavandla
我会为Bash语法错误创建一个新问题,因为这个问题是关于crontab的使用,并且已经解决了。 - olly_uk
1
在执行 Python 脚本之前,你不需要在脚本前面写上 Python 吗? - Samadi Salahedine
显示剩余4条评论

39
你可以使用python-crontab模块。 https://pypi.python.org/pypi/python-crontab 创建新的定时任务只需要以下简单步骤:
from crontab import CronTab
#init cron
cron   = CronTab()

#add new cron job
job  = cron.new(command='/usr/bin/echo')

#job settings
job.hour.every(4)

12
直到现在,我不知道为什么没有人提到过这一点。但是要使此代码实际起作用,需要添加cron.write()。我从这里找到了这个 - http://stackabuse.com/scheduling-jobs-with-python-crontab/ - akki
@Guray Celik,我也在使用相同的模块,我的计划任务进程正在运行,但它没有执行代码。我尝试了很多脚本,甚至像打印一样。 - Narender Reddy

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