os.system の 1 つのインスタンスでコマンドを使用すると問題が発生します。
残念ながら、文字列を os.system メソッドに送信するため、これを制御できないため、os.system を使用する必要があります。私の場合、実際には subprocess モジュールを使用する必要があることはわかっていますが、それはオプションではありません。
だからここに私がやろうとしていることがあります。
以下のような文字列があります。
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 モジュールを使用する必要があることに注意してください。これは私の手に負えません。