索引器错误:从cli argv[1]打开文件时,列表索引超出范围

2024-05-16 11:38:17 发布

您现在位置:Python中文网/ 问答频道 /正文

使用此方法:

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()

我的目标是打开一个文件(一个crontab文件,在stdin上提供),但是这行: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

我仔细检查了以这种方式打开文件的示例,结果似乎还不错。你知道吗

有什么想法吗?你知道吗


Tags: 文件inpyimportredatetimemainsys
1条回答
网友
1楼 · 发布于 2024-05-16 11:38:17
def main():
    filename=open(sys.argv[1])

这将适用于python cron.py /etc/crontab。你知道吗

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

更改为:

filename = sys.stdin

(不要关上)

旁白:filename是错误的选择,因为它是一个文件句柄。这增加了输入流和输入文件之间的混淆。你知道吗

相关问题 更多 >