ValueError:时间数据'%H:%M'与格式'myfile.py'

时间:2018-12-03 17:27:10

标签: python cron argv

考虑此方法:

import croniter
import datetime
import re
import sys
import time
from sys import argv

now=datetime.datetime.now()

def main():
    f = sys.stdin
    f1 = f.readlines() #f.readlines()
    for x in f1:
        if not re.match('^[0-9*]', x):
            continue
        a = re.split(r'\s+', x)
        cron = croniter.croniter(' '.join(a[:5]), now)
        print("%s %s" % (cron.get_next(datetime.datetime), ' '.join(a[5:])))

if __name__ == "__main__":
    main()

它将检查crontab配置文件stdin上给定的文件,其运行方式如下:python myfile.py < /etc/crontab或文件所在的位置。

它检查crontab上的任务,并在下次在系统中运行每个任务时打印。

输出是这样的:

2018-12-03 17:17:00 root cd / && run-parts --report /etc/cron.hourly 
2018-12-04 06:25:00 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 
2018-12-09 06:47:00 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 
2019-01-01 06:52:00 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) 

现在,参考日期是now,并且在脚本上指定了日期,我需要在cli上实际指定该日期,它应该像这样运行:python myfile.py 11:12 < /path/to/crontab

我尝试将now更改为此:

now=time.strptime("%H:%M", argv[0]);

但是它把我扔了

Traceback (most recent call last):
File "cron.py", line 9, in <module>
now=time.strptime("%H:%M", argv[0]); #datetime.datetime.now()
File "/usr/lib/python3.6/_strptime.py", line 559, in _strptime_time
tt = _strptime(data_string, format)[0]
File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '%H:%M' does not match format 'cron.py'

有什么想法吗?

0 个答案:

没有答案