2013-07-11 5 views
5

私は、実験を実行するステップを定義するpythonスクリプトと、実験execute.pyを実行する別のpythonスクリプトを持っています。私がコードよりもデータとして考える最初のファイル。実験が実行されると、フォルダが作成され、definition.pyがフォルダに移動さ​​れ、実験で生成されたデータもそこに保存されます。あるpythonファイルから別のpythonファイルにデータを戻す最も良い方法

私はexecute.py

execute.py -f save_stuff_here -d this_is_the_definition.py 

などを呼び出すするつもりが、私はこれを実現するための最良の方法は何であるかわかりません。 stackoverflowの他の質問は、定義をインポートすることを示唆しているが、私はそれが私のために働くとは思わない。定義が PYTHONPATHのどこかにあるという保証はなく、定義にも同じ名前が付いています。私は、ユーザーがその情報を提供する必要があるので、それが必要ではないことを望むだろう。

definition.pyは、単一のオブジェクト(アクションのリスト)を定義する必要があり、execute.pyはオブジェクトを参照できる必要があります。私は希望

理想的な挙動はscript1.py path/to/script2.pyscript2.pyから​​は、任意のファイルをあるscript1.pyに値を返すということです。

できますか?

+0

ようこそ。あなたの質問に関するちょっとフレンドなメモ、バックスペースを使用してインラインコードスニペットをフォーマットし、4つのスペースをインデントすることによってコードブロックをフォーマットすることができます。誰もが簡単に質問を理解するのに役立ちます。 – fontno

答えて

2

execfileファイルは明示的にglobals dictです。 globals dictを読むことで、ファイルに定義されているものを得ることができます。 Python 3との互換性が必要な場合は、openのファイル、readの内容、execのファイルがあります。 ossysを使用して

0

あなたは、Pythonプログラムのコマンドライン引数を取得し、これは、例えば、ファイル名の入力として最初のCLIを取り、それを呼び出します

import sys 
import os 
filename = sys.argv[1] 
os.system(filename) 

別のPythonプログラムを実行するためにそれらを使用することができます:

script1.py script2.py 

はSCRIPT1コールスクリプト2

1

を行いますあなたは、スクリップへのパス/に/ script2.pyからデータを送信する必要がありますかt1.py script2.pyが実行されると終了しますか? 試しましたか?

script2.py

import os 
data = "whatever" 
os.system("python ..//..//script1.py %s" % data) 

script1.pyのStackOverflowする

import sys 
data = sys.argv[1] 
print "my data is: " + data 
raw_input('enter to finish') 
関連する問題