他の人が答えたように、optparse が最良のオプションですが、簡単なコードが必要な場合は、次のようなものを試してください。
import sys, re
first_re = re.compile(r'^\d{3}$')
if len(sys.argv) > 1:
if first_re.match(sys.argv[1]):
print "Primary argument is : ", sys.argv[1]
else:
raise ValueError("First argument should be ...")
args = sys.argv[2:]
else:
args = ()
# ... anywhere in code ...
if 'debug' in args:
print 'debug flag'
if 'xls' in args:
print 'xls flag'
編集: これは optparse の例です。非常に多くの人が optparse に答えており、理由を説明したり、機能させるために何を変更する必要があるかを説明したりしていません。
optparse を使用する主な理由は、後で展開する際の柔軟性が向上し、コマンド ラインの柔軟性が向上することです。つまり、オプションは任意の順序で表示でき、使用法メッセージは自動的に生成されます。ただし、optparse で動作させるには、仕様を変更して、オプションの引数の前に「-」または「--」を配置する必要があり、すべての引数を任意の順序で指定できるようにする必要があります。
以下は、optparse を使用した例です。
import sys, re, optparse
first_re = re.compile(r'^\d{3}$')
parser = optparse.OptionParser()
parser.set_defaults(debug=False,xls=False)
parser.add_option('--debug', action='store_true', dest='debug')
parser.add_option('--xls', action='store_true', dest='xls')
(options, args) = parser.parse_args()
if len(args) == 1:
if first_re.match(args[0]):
print "Primary argument is : ", args[0]
else:
raise ValueError("First argument should be ...")
elif len(args) > 1:
raise ValueError("Too many command line arguments")
if options.debug:
print 'debug flag'
if options.xls:
print 'xls flag'
ここでの optparse と仕様の違いは、次のようなコマンド ラインを使用できるようになったことです。
python script.py --debug --xls 001
parser.add_option() を呼び出すことで、新しいオプションを簡単に追加できます。