3

我正在开发一个 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。我试过指定外壳,如下所示:

p = subprocess.Popen(args, executable='/bin/bash', pre_exec=oc.setsid)

但它给了我一个执行程序的错误,我认为我希望会发生这种情况。我已经阅读并重新阅读了文档并进行了搜索,但没有运气。

我一定遗漏了一些明显的东西,因为我记得以前这样做过(并且有效)。任何建议,将不胜感激。

4

1 回答 1

5

您应该能够“按原样”提交命令,例如。

cmd = './test.sh > /tmp/ttt.log'
p = subprocess.Popen(cmd, shell = True)
于 2013-08-01T18:10:17.197 回答