3

フラグと変数の両方として機能するオプションをプログラムに指定できるようにしたいと考えています。例: 「--logging」という引数があります。この引数が指定されていない場合は、false (つまり、action='store_true') に設定したいのですが、引数が指定されている場合は、次の 2 つのことを行います。1) 「./log_file.log」のデフォルト パスを設定したい。2) ユーザーが別のログ ファイルの場所を指定できるようにしたい。

4

2 に答える 2

6

そうです、私はこれに対する独自の解決策を考え出しました。それはnargsに依存しています。最初のコードは次のとおりです。

#!/usr/bin/python
# example.py
import argparse

parser = argparse.ArgumentParser(description="Example of a single flag acting as a boolean and an option.")
parser.add_argument('--foo', nargs='?', const="bar", default=False)
args = parser.parse_args()

if args.foo:
  print args.foo
else:
  print "Using the default, boolean False."

その例を考えると、3つの可能な状況でそれを使用するとどうなるかを次に示します。

> ./example.py
  Using the default, boolean False.
> ./example.py --foo
  bar
> ./example.py --foo baz
  baz

うまくいけば、上記はかなり自明です。そうでない場合、何が起こっているのかというと、nargs ='?' フラグが指定されていない場合は「デフォルト」値(この場合はブール値False)を使用し、フラグが引数なしで指定されている場合はconst値を使用し、フラグが引数付きで指定されている場合は引数を使用します。Falseを引用符で囲まないように注意してください。Falseは組み込み型(ブール値)であり、「False」または「False」はtrueと評価されます。

于 2012-06-21T12:29:52.537 に答える
-1

はい、問題ありません。argparse に関する優れた PyMOTWで説明されているこのフォームを使用できます

import argparse    
parser = argparse.ArgumentParser()


parser.add_argument('--logging', action='store_true', default=False,
                    dest='logging_on',
                    help='Activate the logging')

results = parser.parse_args()

logging_on を使用して、後でコード内で値をテストおよび出力できます (意味のあるものに置き換えてください)。ファイル ログ パスの構成ファイルまたは引数のいずれかを使用することもできます。

于 2012-06-20T18:29:21.330 に答える