我正在开发一个Python(2.7)模块,它允许用户在本地运行命令或将作业提交给负载共享设施(如LSF,但是本土)。在这种情况下,我希望用户能够像这样提交命令:
cmd = 'convert_something.tcl some_file >! output_file'
这使得他们的脚本(Tcl,Perl,Python,C / C ++)的转换更容易。 (我预见将来会改变它,但是现在......)subprocess.Popen()命令如下所示:
args = cmd.split()
p = subprocess.Popen(args, shell=True)
然而,无论如何玩Popen的论点,我都无法重定向工作。我目前正在使用tcsh shell,但我也试过bash。我已经尝试过指定shell,如下所示:
p = subprocess.Popen(args, executable='/bin/bash', pre_exec=oc.setsid)
但它给我一个执行程序的错误,我认为我希望这会发生。我已阅读并重新阅读文档并进行了搜索,但没有运气。
我必须遗漏一些显而易见的东西,因为我记得以前做过这件事(并且有效)。任何建议将不胜感激。
答案 0 :(得分:4)
您应该能够“按原样”提交命令,例如
cmd = './test.sh > /tmp/ttt.log'
p = subprocess.Popen(cmd, shell = True)