0

コマンドラインから引数を受け取るモジュールがあります。それを module と呼びましょうA

A別のモジュールから実行したい-の引数が設定されるBように-BA

A別のプロセスとして実行せずに。

それを行う方法はありますか?

4

3 に答える 3

3

それは、モジュール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__':スイートですべての作業を行う場合は、沈没してそのコードを再現する必要があることに注意してください。

于 2012-12-23T17:56:27.393 に答える
2

コマンドラインとモジュールの両方から実行できるように、スクリプトで 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')
于 2012-12-23T17:56:20.170 に答える
0
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

うまくいくと思います...あまりお勧めしませんが....

于 2012-12-23T17:55:45.150 に答える