Passing meta-characters to Python as arguments from command line

前端 未结 4 793
一生所求
一生所求 2020-12-11 03:37

I\'m making a Python program that will parse the fields in some input lines. I\'d like to let the user enter the field separator as an option from the command line. I\'m usi

4条回答
  •  盖世英雄少女心
    2020-12-11 03:39

    The callback option is a good way to handle tricky cases:

    parser.add_option("-d", "--delimiter", action="callback", type="string",
                      callback=my_callback, default='\t')
    

    with the corresponding function (to be defined before the parser, then):

    def my_callback(option, opt, value, parser):
        val = value
        if value == '\\t':
            val = '\t'
        elif value == '\\n':
            val = '\n'
        parser.values.delimiter = val
    

    You can check this works via the command line: python test.py -f test.txt -d \t (no quote around the \t, they're useless).

    It has the advantage of handling the option via the 'optparse' module, not via post-processing the parsing results.

提交回复
热议问题