用这种方法:
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
我仔细检查了有关以这种方式打开文件的示例,它似乎很好。
有什么想法吗?
发布于 2018-12-03 16:36:29
def main():
filename=open(sys.argv[1])这将适用于python cron.py /etc/crontab。
但是,您没有参数,而是使用stdin提供输入。
改为:
filename = sys.stdin(不要关闭它)
旁白:filename选择不当,因为它是一个文件句柄。这增加了输入流和输入文件之间的混淆。
https://stackoverflow.com/questions/53597973
复制相似问题