1

私の Python スクリプトにオプションを提供するために、いくつかのパラメーターを導入したいと思います。Pythonでこれを行うより良い方法はgetoptを使用することですが、スクリプトを実行すると何もしません。私を助けてください!!!。これは私のコードです:

def main(argv):
     try:
            opts, args = getopt.getopt(argv, 'hi:o:t', ['help', 'input=', 'output='])
    except getopt.GetoptError:
            usage()
            sys.exit(2)
            file = None
            outfile = None
    for opt, arg in opts:
            if opt in ('-h', '--help'):
                    usage()
                    sys.exit(2)
            elif opt in ('-i', '--input'):
                    file = arg
            elif opt in ('-o', '--output'):
                    outfile = arg
            elif opt == '-t':
                    maininfo(file,outfile)
            else:
                    usage()
                    sys.exit(2)

if __name__ =='__main__':
    main(sys.argv[1:])
4

3 に答える 3

5

ロギングを追加することをお勧めします。これは現在あなたを助けるだけでなく、将来あなたのスクリプトを使う人を助けるでしょう。

def main(argv):
    filename = None
    outfile = None
    call_maininfo = False
    try:
        opts, args = getopt.getopt(argv, 'hi:o:t', ['help', 'input=', 'output='])
        if not opts:
            print 'No options supplied'
            usage()
    except getopt.GetoptError, e:
        print e
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ('-h', '--help'):
            usage()
            sys.exit(2)
        elif opt in ('-i', '--input'):
            filename = arg
        elif opt in ('-o', '--output'):
            outfile = arg
        elif opt == '-t':
            call_maininfo = True
        else:
            usage()
            sys.exit(2)

    print 'Processed options [{0}] and found filename [{1}] and outfile [{2}]'.format(
            ', '.join(argv),
            filename,
            outfile,
            )

    if call_maininfo:
        print 'Calling maininfo()'
        maininfo(filename, outfile)

また、ファイル名の前に指定できるように、呼び出しをmaininfo()ループの外に移動しました。-t

于 2011-08-13T06:32:17.003 に答える
3

標準の python モジュール解析引数であるoptparse (古いバージョン、python 2.7 以降は非推奨) または argparse (新しいバージョン) を使用できます。

これが最初に役立つことを願っています

于 2011-08-13T05:53:56.190 に答える