首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IndexError:从cli - argv[1]中列出超出范围的索引

IndexError:从cli - argv[1]中列出超出范围的索引
EN

Stack Overflow用户
提问于 2018-12-03 16:32:54
回答 1查看 229关注 0票数 1

用这种方法:

代码语言:javascript
复制
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])正在抛出以下内容:

代码语言:javascript
复制
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

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

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 16:36:29

代码语言:javascript
复制
def main():
    filename=open(sys.argv[1])

这将适用于python cron.py /etc/crontab

但是,您没有参数,而是使用stdin提供输入。

改为:

代码语言:javascript
复制
filename = sys.stdin

(不要关闭它)

旁白:filename选择不当,因为它是一个文件句柄。这增加了输入流和输入文件之间的混淆。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53597973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档