使用此方法:
import croniter
import datetime
import re
import time
from sys import argv
now=datetime.datetime.now()
def main():
filename=open(sys.argv[1])
f1 = filename.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()
我打算打开一个文件(在stdin上提供一个crontab文件),但是这一行:filename=open(sys.argv[1])
抛出了这个消息:
Traceback (most recent call last):
File "cron.py", line 25, in <module>
main()
File "cron.py", line 13, in main
filename=open(sys.argv[1])
IndexError: list index out of range
我正在使用如下脚本:python cron.py < /etc/crontab
我仔细检查了有关以这种方式打开文件的示例,这似乎很好。
有什么想法吗?
答案 0 :(得分:2)
def main():
filename=open(sys.argv[1])
将与python cron.py /etc/crontab
一起使用。
但是,您没有参数,而是使用stdin
更改为:
filename = sys.stdin
(并且不要关闭它)
此外:filename
是错误的,因为它是文件句柄。这加剧了输入流和输入文件之间的混乱。