1

optparseを使用して、スクリプトのコマンドオプションを解析します。-fオプションと-cオプションがあり、どちらもオプション引数が必要です。ただし、欠落している場合は、次のオプションを現在のオプションのオプション引数として扱います。例えば

./myScript -f -c

これにより、「-f」と「-c」にオプション引数がないことについて文句を言う代わりに、「-c」が「-f」のオプション引数として扱われます。他の通常のシナリオでは、正常に機能します。

情報と解決策をありがとう!

更新:解決策、argparseを使用することにより、この問題を回避できます。オプションの引数がないことを訴えるエラーで終了します。

4

1 に答える 1

1

optparseはpython2.7以降で非推奨になっているため、次のargparse動作が組み込まれているモジュールを使用する必要があります。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-f')
parser.add_argument('-c')

parser.parse_args(['-f', 'f_val', '-c', 'c_val'])   #works as expected
parser.parse_args(['-f', '-c'])                     #errors as expected

python <2.7とoptparseモジュールが残っている場合は、解析段階の後でカスタムチェックを使用して簡単に行うことができます。

parser = OptionParser('usage')
parser.add_option("-f", "--ff", dest="f_value")
parser.add_option("-c", "--cc", dest="c_value")

(options, args) = parser.parse_args()

if options.f_value == '-c':
    print 'error: -f requires an argument'
    exit(1)
于 2013-02-26T18:08:56.263 に答える