5

コマンドラインから呼び出して、python 2.6 でキーワード引数を使用できるプログラムを作成しようとしています。これまでのところ、私は試しました:

#!/usr/bin/python
def read(foo = 5):
    print foo
    return 0
if __name__ == '__main__'
    read()

コマンドラインからこれを実行しようとすると./test.py、プログラムは期待どおりに 5 を出力します。使用方法はあります./test.py foo=6か?キーワード引数を保持したい。

単純な質問のように思えますが、これに関する適切な情報源が見つかりませんでした。

4

3 に答える 3

6

pythonには、コマンドライン引数をスクリプトに渡すのに役立つライブラリが組み込まれています argparse。使用法は、質問で説明しているものとは少し異なります...

基本的なレベルでは、すべてのコマンド ライン引数に でアクセスできますsys.argv。これは引数のリストになります。

申し訳ありませんが、python 2.6ライブラリが呼び出されていることを言及する必要がありましたoptparse

于 2012-10-24T17:20:07.940 に答える
3

このようなもの?

if __name__ == '__main__':
    kwargs = dict(x.split('=', 1) for x in sys.argv[1:])
    read(**kwargs)

そうは言っても、argparse と optparse はおそらく、コマンドラインに慣れている人にとってより堅牢で自然なものを提供するでしょう。(言うまでもなく、文字列以外の型の引数をサポートします。)

ああ、あなたが本当に望んでいるのは関数のインタラクティブな使用だけである場合は、インタラクティブなインタープリターを使用してください。またはのいずれpythonipython。で終わるファイルにコードを入れて.pyインポ​​ートする必要があり、それを呼び出すことができます。

于 2012-10-24T18:00:46.887 に答える
1

あまり一般的ではありませんが、非常に興味深い代替手段はdocoptです。これは、プログラム用に作成したヘルプ メッセージ ( github ) から引数パーサーを生成するライブラリです。

于 2012-10-24T18:53:07.513 に答える