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

Python os.system:在一个方法中使用多个命令保存shell变量,python,Python,我在一个os.system实例中使用命令时遇到问题 不幸的是,我必须使用os.system,因为我无法控制它,因为我将字符串发送到os.system方法。我知道我真的应该在我的案例中使用子流程模块,但这不是一个选项 这就是我要做的 我有一个字符串,如下所示: cmd = "export BASE_PATH=`pwd`; export fileList=`python OutputString.py`; ./myscript --files ${fileList}; cp outputfile

我在一个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_路径似乎正在工作,但当我使用cp outputfile/调用它时。 我得到一个空字符串

同样,在我的文件列表中,我得到一个空字符串,fileList=
python OutputString.py
应该将文件列表打印到此变量

我的想法:

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

我也不知道为什么文件列表是空的

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


请注意,我必须使用os.system模块。这超出了我的控制。

旁注:使用而不是
os.system
。如果你必须使用
os.system
,那是因为它是家庭作业还是类似作业?@Chris不,它不是家庭作业。我必须使用os.system,因为它是主机程序的一部分,在我将作业(可执行文件)提交到服务器时使用,因此我无法更改它。正如我所说的,如果我有选择的话,我会使用子流程。