コマンドラインから引数を受け取るモジュールがあります。それを module と呼びましょうA
。
A
別のモジュールから実行したい-の引数が設定されるB
ように-B
A
A
別のプロセスとして実行せずに。
それを行う方法はありますか?
コマンドラインから引数を受け取るモジュールがあります。それを module と呼びましょうA
。
A
別のモジュールから実行したい-の引数が設定されるB
ように-B
A
A
別のプロセスとして実行せずに。
それを行う方法はありますか?
それは、モジュールA
が引数をどのように受け取るかによって異なります。見るだけsys.argv
でテストがない場合は、次の__main__
ように変更できますsys.argv
。
sys.argv[1:] = ['arg1', 'arg2']
次にモジュールをインポートしますA
。
ただし、自分で記述している場合は、代わりにテストA
から呼び出される関数を使用してください。__main__
def main(*args):
# main code for module
if __name__ == '__main__`:
import sys
main(*sys.argv[1:])
次に、インポートA
して直接呼び出すことができますmain()
:
import A
A.main('arg1', 'arg2')
モジュールA
が自分のものではなく、テスト__main__
はあるが、そのif __name__ == '__main__':
スイートですべての作業を行う場合は、沈没してそのコードを再現する必要があることに注意してください。
コマンドラインとモジュールの両方から実行できるように、スクリプトで main メソッドを定義するだけです。
def main(arg1, arg2):
# All your code goes here
if __name__ == '__main__':
main(*sys.argv[1:])
次に、次のいずれかを実行できます。
$ a.py x y
または
>>> import a
>>> a.main('x', 'y')
import sys
sys.argv[1:] = ["My Arguments","other Args"] #dont replace [0] ...since it can let you know which script was actually executed ...
import A
A.run() #or whatever
うまくいくと思います...あまりお勧めしませんが....