我正在尝试在python中使用子进程调用来添加cron作业条目:
from subprocess import call
call(["(crontab -l; echo '* * * * * ls -l | tee tresults.txt') | sort - | uniq - | crontab - "])
我不知道我做错了什么!这是错误:
答案 0 :(得分:0)
我认为你在这里遇到问题的原因是来自call
的{{1}}函数有两种方法被调用(引用Python 2.7文档:https://docs.python.org/2/library/subprocess.html#frequently-used-arguments):< / p>
如果您使用subprocess
并将单个字符串作为参数,则还需要传递'shell = True':
call
如果您不想调用call("a long command with many arguments", shell=True)
,这在某些情况下可能会很糟糕,您需要将每个参数附加到它自己的字符串中,如Python文档示例中所示:{{3 }}
shell=True
在您的情况下,我会尝试在call(["ls", "-l"])
来电中添加shell=True
参数,看看是否有帮助。
答案 1 :(得分:0)
subprocess.call()
默认情况下不会运行shell(/bin/sh
)。
您需要emulate multiple pipes in Python或只需传递shell=True
:
#!/usr/bin/env python
from subprocess import check_call
check_call("(crontab -l; echo '* * * * * ls -l | tee tresults.txt') | "
"sort - | uniq - | crontab - ",
shell=True)