1

Python言語(abc.py)を使用してスクリプトを書き込もうとしています。スクリプトの実行中に、いくつかのコマンドライン引数を取る必要があります。

-m、-pは私の引数です。これらのオプションの横に文字列が必要です。元:

 1. $> python abc.py -m 'first' -p 'second' {correct}
 2. $> python abc.py -p 'first' -m 'second' {correct}
 3. $> python abc.py -m -p 'first' 'second' {Incorrect}
 4. $> python abc.py 'first' -p 'second' {Incorrect}

-m、のような議論がもっとあり-pます。渡された引数が正しい形式であるかどうかを確認するための最良のアルゴリズムは何ですか。前の議論を維持する方法以外は考えられず、それに基づいてチェックします。

よろしくお願いします

アンジ

4

3 に答える 3

7

あなたは自分でそれをする必要はありません、彼らが言うようにPythonはバッテリーが含まれています。標準ライブラリには、コマンドライン引数を解析するための2つのモジュールがあります。Python2.7以降の場合はargparse、2.6以前の場合はoptparseです。それらのドキュメントにも良い使用例があります。

于 2012-04-29T07:28:44.463 に答える
1

argparseモジュールを使用するhttp://docs.python.org/library/argparse.html#module-argparse

于 2012-04-29T07:24:52.857 に答える
0

モジュールは優れていますが、pylint とは相性が悪いため、エラー検出を改善するために独自の引数解析を行う傾向があります。例えば:

red = False
blue = False
green = False
red_weight = 1.0
green_weight = 1.0
blue_weight = 1.0

while sys.argv[1:]:
   if sys.argv[1] in [ '-h', '--help' ]:
      usage(0)
   elif sys.argv[1] in [ '-r', '--red' ]:
      red = True
   elif sys.argv[1] in [ '-b', '--blue' ]:
      blue = True
   elif sys.argv[1] in [ '-g', '--green' ]:
      green = True
   elif sys.argv[1] == '--red-weight':
      red_weight = float(sys.argv[2])
      del sys.argv[1]
   elif sys.argv[1] == '--green-weight':
      green_weight = float(sys.argv[2])
      del sys.argv[1]
   elif sys.argv[1] == '--blue-weight':
      blue_weight = float(sys.argv[2])
      del sys.argv[1]
   else:
      sys.stderr.write('%s: unrecognized option: %s\n' % (sys.argv[0], sys.argv[1]))
      usage(1)
   del sys.argv[1]

HTH

于 2012-04-29T21:30:14.903 に答える