首页 > 解决方案 > AttributeError:'list'对象没有属性'split'-使用croniter打印下一个crontab计划作业-stdout-Python

问题描述

我需要阅读/etc/crontab文件的内容。

现在我有这个:

import croniter
import datetime

now = datetime.datetime.now()


def main():

    f = open("/etc/crontab","r")
    f1 = f.readlines()
    cron = croniter.croniter(f1, now)
    for x in f1:
        cron.get_next(datetime.datetime)
        print(x)

if __name__ == "__main__":
    main()

我想要的是在下次运行任务时打印,根据我的 crontab 文件中定义的内容,我遵循了这个答案,但是我需要从文件(即 crotab 文件)中实际读取它,然后将其打印到 stdout .

现在它向我抛出了这个:

Traceback (most recent call last):
File "cron.py", line 17, in <module>
main()
File "cron.py", line 11, in main
cron = croniter.croniter(f1, now)
File "/home/user/.virtualenvs/rest_tails2/lib/python3.6/site-packages/croniter/croniter.py", line 92, in __init__
self.expanded, self.nth_weekday_of_month = self.expand(expr_format)
File "/home/user/.virtualenvs/rest_tails2/lib/python3.6/site-packages/croniter/croniter.py", line 464, in expand
expressions = expr_format.split()
AttributeError: 'list' object has no attribute 'split'

对此有什么想法吗?我很新croniter,也有python-crontab但还没有使用它。

标签: pythoncronattributeerror

解决方案


croniter处理单个 cron 表达式。您应该将它放在循环中,并将其分别应用于每一行:

for x in f1:
    cron = croniter.croniter(x, now) # Here!
    cron.get_next(datetime.datetime)
    print(x)

推荐阅读