我正在尝试使用python脚本在Linux中安排一些作业。 目前,我的脚本看起来像这样:
import subprocess command = 'python foo.py %s %s | at %s' % (arg1, arg2, starttime) subprocess.Popen([command,], shell=True)
但这似乎并不奏效,我希望有人能够就我应该做的事情提供build议。
你的问题是使用at
命令,它会得到一个字符串,所以你想要的更多
command = 'echo python foo.py %s %s | at %s' % (arg1, arg2, starttime)
或者以更为pythonic的方式
sched_cmd = ['at', starttime] command = 'python foo.py %s %s' % (arg1, arg2) p = subprocess.Popen(sched_cmd, stdin=subprocess.PIPE) p.communicate(command)
如果你传入shell=True
, Popen()
需要一个字符串:
import subprocess command = 'python foo.py %s %s | at %s' % (arg1, arg2, starttime) subprocess.Popen(command, shell=True)
另外,你是什么意思的“不工作”? 这对我来说可以:
>>> import subprocess >>> subprocess.Popen('echo "asd" | rev', shell=True).communicate() dsa (None, None)
还有你的代码:
>>> import subprocess >>> subprocess.Popen(['echo "asd" | rev',], shell=True).communicate() dsa (None, None)