複数の python ファイルがあり、それぞれに異なるクラスとメソッドが含まれています。これらすべてのファイルを、すべてのファイルの外側に個別に持っている main 関数で実行したいと考えています。
例えば:
one.py、two.py、three.py という 3 つのファイルがあります。
それらのいずれにもメインメソッドはありませんが、それらを実行すると、個別に持っているメイン関数を通過させたいと思います。これは可能ですか?
ありがとう。
複数の python ファイルがあり、それぞれに異なるクラスとメソッドが含まれています。これらすべてのファイルを、すべてのファイルの外側に個別に持っている main 関数で実行したいと考えています。
例えば:
one.py、two.py、three.py という 3 つのファイルがあります。
それらのいずれにもメインメソッドはありませんが、それらを実行すると、個別に持っているメイン関数を通過させたいと思います。これは可能ですか?
ありがとう。
それらをインポートしたいということですか?
import one
import two
import three
result = one.func()
instance = two.YourClass()
something = three.func()
Pythonには「メインメソッド」がないことに注意してください(おそらくJAVAを使用していますか?)。と言うとpython thisfile.py
、python は "thisfile.py" 内のすべてのコードを実行します。私たちが使用する巧妙なトリックの 1 つは、各「モジュール」に属性「name」があることです。直接呼び出されるスクリプト (例: thisfile.py
) には、名前が割り当てられ"__main__"
ます。これにより、スクリプトであることが意図されているモジュールの部分と、他の場所で再利用されることを意図されている部分を分離できます。これの一般的な使用例はテストです:
#file: thisfile.py
def func():
return 1,2,3
if __name__ == "__main__":
if func() != (1,2,3):
print "Error with func"
else:
print "func checks out OK"
これを として実行するpython thisfile.py
と が出力さfunc checks out OK
れますが、別のファイルにインポートすると、たとえば次のようになります。
#anotherfile.py
import thisfile
そして、そのファイルを 経由で実行するとpython anotherfile.py
、何も印刷されません。
それらをモジュールとして使用し、main を含むスクリプトにインポートします。
import one
import two
import three
if __name__ == '__main__':
one.foo()
two.bar()
three.baz()
これらのファイルをインポートする新しいファイルを作成し、そのファイルを実行します。
以前の回答が示唆しているように、単に機能を再利用する必要がある場合は、インポートを行ってください。
ただし、事前にファイル名がわからない場合は、少し異なるインポート構成を使用する必要があります。one.py
同じディレクトリにあるというファイルの場合は、次を使用します。
one.py の内容:
print "test"
def print_a():
print "aa"
あなたのメインファイル:
if __name__ == "__main__":
imp = __import__("one")
print dir(imp)
テストを出力し、インポートされたファイルに含まれるメソッドに関する情報も提供します。