我在使用带有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模块。这是我无法控制的。