3

getoptモジュールを使用してコマンドラインオプションと引数を取得するために、Pythonでコードを記述しようとしています。これが私のコードです:

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'xy:')
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for o,a in opts:
        if o in ("-x", "--xxx"):
            print(a)
        elif o in ("-y", "--yyy"):
            print(a)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

問題は、オプションの引数を読み取ることができないことですが、の引数はx読み取ることができますy。これを修正するにはどうすればよいですか?

4

2 に答える 2

11

試すgetopt.getopt(sys.argv[1:], 'x:y:')

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

コマンドラインオプションとパラメータリストを解析します。argsは、実行中のプログラムへの先行参照なしで、解析される引数リストです。通常、これはsys.argv [1:]を意味します。optionsは、スクリプトが認識したいオプション文字の文字列であり、引数の後にコロン(':';つまり、Unix getopt()が使用するのと同じ形式)が必要なオプションがあります。

于 2011-07-03T11:36:37.773 に答える
0

引数を読みたい場合は、オプションの横に「:」を付ける必要があります。「help」や「verbose」のように引数を必要としないオプションがいくつかあり、その後に「:」を付ける必要はありません。

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'x:y:h', ['xxx=', 'yyy=', 'help='])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for opt,arg in opts:
        if opt in('-h', '--help'):
            usage()
            sys.exit( 2 )
        elif opt in ('-x', '--xxx'):
            print(arg)
        elif opt in ('-y', '--yyy'):
            print(arg)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()
于 2019-01-04T12:24:59.993 に答える