<p>我修改了史蒂文的代码,使之适合我。
为了不丢失先前计划的crontab作业,我创建了cron_作业.txt将所有现有的计划作业从crontab归档并复制到cron_作业.txt子流程调用“crontab-l>;/home/pifik/Documents/cron”_作业.txt". 每次我这样做,我都会覆盖文件中的所有内容。然后我创建一个新的录制作业并将其附加到cron_作业.txt文件。之后,我通过运行subprocess.call('crontab/home/pifik/Documents/cron_作业.txt“,shell=True)”。在</p>
<p>这是一种解决方法,可以让它正常工作,但是我仍然有兴趣知道是否可以使用python crontab模块直接附加新的作业,而不需要cron_作业.txt文件。可以说,按照我现在这样做的方式,也可以不使用模块来完成,但模块通过激活或停用作业以及删除过期作业,使我更容易进一步管理作业。我会在上面放一些小图形,现在就搞定了。在</p>
<pre><code>import subprocess
from crontab import CronTab
class CronSet:
def __init__(self):
self._crontab = CronTab(tabfile="/home/pifik/Documents/cron_jobs.txt")
def add_job(self, minute, hour, day, month, title):
subprocess.call('crontab -l > /home/pifik/Documents/cron_jobs.txt', shell=True)
choice=input('''1. Cesky Rozhlas 1
2. Cesky Rozhlas 2
Enter your choice (1 or 2): ''')
length = int(input("Enter the length of recording in minutes: "))*60
if choice ==str(1):
stream = "http://amp.cesnet.cz:8000/cro1-256.ogg"
else:
stream = "http://amp.cesnet.cz:8000/cro2-256.ogg"
cmd = "curl %s -m %i -o /home/pifik/Documents/Recordings/%s.ogg" %(stream, length, title)
job = self._crontab.new(cmd, comment=title)
job.setall(minute, hour, day, month, None)
def save(self):
self._crontab.write()
def main():
c = CronSet()
month = input("Enter month(1-12): ")
day = input("Enter day(1-31): ")
hour = input("Enter hour(0-24): ")
minute = input("Enter minute(0-59): ")
title = input("Enter title of recording: ")
c.add_job(minute, hour, day, month, title)
c.save()
subprocess.call('crontab /home/pifik/Documents/cron_jobs.txt', shell=True)
if __name__ == '__main__':
main()
</code></pre>