2016-09-30 8 views
0

Pythonの初心者です。execfile/subprocess.callのオブジェクトと対話する引数付きのPythonファイル

私は、そのデータの引数を必要とするpythonファイルの変数/オブジェクトと対話しようとしています。 このデータは、渡される引数を含むスクリプトを作るのではなく、という引数から取得することができます(つまり、execfileまたはsubprocess.callを使用する必要があります)。

のは、これが私のpythonファイル、foo.pyだったとしましょう:もちろん

bar = 123 
print("ran foo.py, bar = %d" % bar) 

、そこに引数を解析するために、ファイルへのよりも、それは関係ありませんでしょう。上の例の出力として

>>> import subprocess 
>>> subprocess.call("python foo.py 'args'", shell=True) 
ran foo.py, bar = 123 
0 
>>> bar 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'bar' is not defined 

、バーはfoo.py.から標準出力後に定義されていません。今、Pythonシェル(端末でPythonやipythonのいずれか)に

execfileまたはsubprocess.callによって呼び出されるpythonファイル内の変数またはデータオブジェクトと対話する方法はありますか?通常、私はREPLで評価するか、IDEで実行するので、実行後に値とオブジェクトをテストすることができますが、解析された引数からデータを構築するPythonファイルでこれを行う方法を理解できません。

どのように私はこれを行うことができます知っていますか?いずれにせよ、あなたの配慮に感謝します。

答えて

0

foo.pyはあなたのコントロール下にありますか?はいの場合は、単純にモジュールを変更してモジュールとしてインポートして実行できるように変更します。 いいえの場合は、出力を文字列としてキャッチし、変数barを新しくビルドする必要があります。 ここでは、サブプロセスの出力をキャプチャする方法を示します。 Running shell command from Python and capturing the output

関連する問題