arbitrary_args.py
:.
#!/usr/bin/env python3
import sys
def parse_args_any(args):
pos = []
named = {}
key = None
for arg in args:
if key:
if arg.startswith('--'):
named[key] = True
key = arg[2:]
else:
named[key] = arg
key = None
elif arg.startswith('--'):
key = arg[2:]
else:
pos.append(arg)
if key:
named[key] = True
return (pos, named)
def main(argv):
print(parse_args_any(argv))
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
$./arbitrary_args.py cmd posarg1 posarg2 --foo --bar baz posarg3 --quux
:
([ 'cmd'를 'posarg1', 'posarg2', 'POS 에서 arg3 ', {'foo는 ': 사실,'바 ':'바즈 ','quux 'TRUE})
argparse_arbitrary.py
:
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-D', action='append',)
D = {L[0]:L[1] for L in [s.split('=') for s in parser.parse_args().D]}
print(D)
$./argparse_arbitrary.py -Ddrink=coffee -Dsnack=peanut
를 {' 스낵 ':'땅콩 ','음료 ':'커피 '}
.... "매크로"? –
필자가 생각한 유추는'-Dthismacro = macrovalue'와 같은 gcc를 사용하는 것입니다. –