IndexError:列表索引超出范围-从cli中打开文件-argv [1]

时间:2018-12-03 16:32:54

标签: python cron

使用此方法:

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

我仔细检查了有关以这种方式打开文件的示例,这似乎很好。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

def main():
    filename=open(sys.argv[1])

将与python cron.py /etc/crontab一起使用。

但是,您没有参数,而是使用stdin

输入输入

更改为:

filename = sys.stdin

(并且不要关闭它)

此外:filename是错误的,因为它是文件句柄。这加剧了输入流和输入文件之间的混乱。