os.system:在一个方法中使用多个命令保存shell变量

时间:2012-04-17 23:33:26

标签: python

我在使用带有os.system的一个实例的命令/命令时遇到问题。

不幸的是我必须使用os.system,因为我无法控制它,因为我将字符串发送到os.system方法。我知道我应该在我的情况下使用子进程模块,但这不是一个选项。

所以这就是我想要做的。

我有一个如下字符串:

cmd = "export BASE_PATH=`pwd`; export fileList=`python OutputString.py`; ./myscript --files ${fileList}; cp outputfile  $BASE_PATH/.;"

然后将此命令发送到os.system模块,如此

os.system(cmd)

不幸的是,当我查阅我的日志文件时,我得到的内容看起来像这样

os.system(r"""export BASE_PATH=/tmp/bla/bla; export fileList=; ./myscript --files ; cp outputfile  /.;""")

正如您所看到的,BASE_PATH似乎正在工作,但是当我用cp outputfile /调用它时。 我得到一个空字符串

同样使用我的fileList,我得到一个空字符串,因为fileList = python OutputString.py应该打印出一个文件列表到这个变量。

我的想法:

这些错误是由于每个命令的新进程造成的吗?因此,我在下一个命令中松开了BASE_PATH中的变量。

另外我不确定为什么fileList为空。

使用os.system和我的命令字符串是否有解决上述问题的方法?

请注意我必须使用os.system模块。这是我无法控制的。

0 个答案:

没有答案
相关问题