コマンドラインから引数を受け取るモジュールがあります。それを module と呼びましょうA。
A別のモジュールから実行したい-の引数が設定されるBように-BA
A別のプロセスとして実行せずに。
それを行う方法はありますか?
コマンドラインから引数を受け取るモジュールがあります。それを module と呼びましょうA。
A別のモジュールから実行したい-の引数が設定されるBように-BA
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
うまくいくと思います...あまりお勧めしませんが....