0

私は自分のコードで次のように使用getoptしています:

opts, args = getopt.getopt(sys.argv[1:], "", ["admit=", "wardName="])

次に、次の事項でコマンドラインからコードを実行します。

Test.py --args --admit=1 --wardName="CCU"

の内容を印刷するとopts、次の出力が得られます。

[('--admit', '1'), ('--wardName', 'CCU')]

最初の質問は、この結果のデータ型は何ですか? タプルのリストのように思えます。あれは正しいですか?

2 番目の質問-そのようなタプル ペアを操作する便利な方法はありますか (これらがタプルである場合)。たとえば、次のように言うにはどうすればよいでしょうか。タプルを辞書に変換することを考えましたが、それは良い習慣ですか?

PSこれは実際にはJythonであり、純粋なPythonではありません。

4

3 に答える 3

1

Python ドキュメントの最初のページでは、Python ライブラリ ドキュメントについて「これを枕の下に置いておいてください」と説明しています。getopt のページは次のとおりです。

http://docs.python.org/2/library/getopt.html

getopt から 2 つのリストが返されます。言及したタプルのリストに続いて、すべてのオプションが解析された後の残りの引数のリストです。これを試して:

import getopt
args = ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
opts, args = getopt.getopt(args, "abc:d")
print ("opts=" + str(opts))
print ("args=" + str(args))
optdic = dict(opts) # convert options to dictionary
print ("optdic['-c'] = " + str(optdic['-c']))

出力:

opts=[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', '')]
args=['bar', 'a1', 'a2']
optdic['-c'] = foo
于 2013-08-26T06:33:06.457 に答える
0

オプションと値を操作する便利な方法:

import getopt, sys

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "", ["admit=", "wardName="])
        print opts
    except getopt.GetoptError, err:
        # print help information and exit:
        print str(err)
        sys.exit(2)

    admitArg = False
    wardName = ""

    for o, a in opts:
        if o == "--admit":
            admitArg = a
        elif o == "--wardName":
            wardName = a
        else:
            assert False, "unhandled option"

    # do something with the argument values
    if admitArg:
        print "--admit is True"

    if wardName == "Foobar":
        print "wardName is Foobar!"

if __name__ == "__main__":
    main()
于 2013-08-26T07:12:32.210 に答える
0

はい、tupleaの一覧です。type()チェックに使えます。

辞書は問題なく機能します。

D = dict(opts)
print D['--admit']
print D['--wardName']
于 2013-08-26T06:33:22.353 に答える