-1

Pythonスクリプトa.pyとb.pyがあります。b.pyのメイン関数を呼び出し、a.pyから引数を渡します。コード内からa.pyにオプションを追加し、それをb.pyのメインに渡す方法は?追加オプションとして辞書を追加しようとしましたが、何らかの理由でb.pyが正しい値を取得していません。add_optionは、コマンドラインオプションに対してのみ機能します。

a.py内にbをインポートしましたが、b.pyのmainにreadOnly値を渡そうとしています。基本的に、コマンドラインとしてa.pyからreadOnlyを渡したくはありませんが、a.py内のコードを介してreadOnlyを渡します。

a.py

import b

def main()
    usage = "usage: %prog [options]"
    parser = OptionParser(usage)
    (options, _ ) = parser.parse_args()
    varsOptions = vars(options)
    varsOptions['readOnly'] = True
    b.main(varsOptions)


b.py

def main(argv):
    usage = "usage: %prog [options]"
    parser = OptionParser(usage)
    parser.add_option("-r", action="store_true", dest="readOnly")
    (options, _ ) = parser.parse_args()
    varsOptions = vars(options)
    print(varsOptions)

if __name__ == "__main__":
    main(sys.argv[1:])

このコードが機能しないのはなぜですか?

TIA、

ジョン

4

3 に答える 3

2

公式ドキュメントの例をご覧ください:http://docs.python.org/dev/library/argparse.html for argparse

古いPythonについては、http://docs.python.org/dev/library/optparse.htmlを参照してください

于 2012-05-25T18:43:27.400 に答える
1

パラメータb.mainを使用しないため、動作しません。argv

パラメータとして渡すこともできargvますparse_argsが、辞書ではなく文字列のリストである必要があります。

これを試してみてくださいa

b.main(["-r"])
于 2012-05-25T19:47:08.557 に答える
0

これは本当に良い考えではありません。

ただし、必要な場合は、osrunコマンドを使用して実行できます。

os.system('script.py "options"')

次のスタックオーバーフローを読む必要があります

別のPythonスクリプトファイル内から引数を使用してPythonスクリプトファイルを実行する方法

于 2012-05-25T18:46:22.207 に答える