1
我想从python脚本分配任务给qsub。Python:与子进程回显
为的qsub提交到目前为止,我一直用这样的表达:
echo "python script.py arg1 arg2" | qsub
我想在python重现此命令:
command = 'echo "python sub_master_script.py ' + str(i) + ' ' + path + '" | qsub -pe make 5 -N Teaching_' + str(i) + ' -cwd'
subprocess.call(shlex.split(command))
虽然command
带有命令我通常会使用,当我启动python脚本时,它被解释为一个简单的echo
。
,而不是开始一个新的工作,我得到这个写在控制台:
python sub_master_script.py 0.75 /data5/bio/runs-galkin/Iterative/test_OTU.txt | qsub -pe make 5 -N Teaching_0.75 -cwd
为什么出现这种情况?我怎样才能使它工作?
这里假设'i'和'path'是不需要引用/转义的字符串。使用'pipes.quote()'来准备它们的值会更安全(虽然,被授予,OP的原始shell命令是完全相同的方式是不安全的/ bug)。 –
@CharlesDuffy很好的附加组件。编辑。 –
我试着用你的解决方案,我得到'TypeError:__init __()有一个意想不到的关键字参数'input'' 使用'subprocess.Popen(command,shell = True,stdout = subprocess.PIPE,stderr = subprocess.STDOUT)'工作正常。我没有看到'shell = True'出了什么问题,所以我想我会离开它 – lotrus28