2017-04-07 10 views
0

optparse의 사용 argparse, 나는 현재 가지고변환 optparse의이

func(opts,sys.argv) 

지금 argparse 사용하려고 해요을하지만, argparse에 대한 형식이 다릅니다 :

args = parser.parse_args(sys.argv[1:]) 

이 옵션을 사용하면 opts를 기능에 넣을 수 없습니다.

argparse를 사용할 수있는 방법이 있는지 궁금 해서요.

저는 파이썬 2.7을 사용하고 있습니다.

답변

0

optparse과 매우 유사한 방법으로 argparse을 사용할 수 있습니다. the documentation에서 인수를 접두어로 사용하면 - 또는 --으로 바뀌므로 옵션 매개 변수가됩니다. 프로그램이 다른 부르는 것들은으로 접두사 옵션이 할 필요가있는 경우 또한

parser = argparse.ArgumentParser() 
parser.add_argument('-f', '--foo') 
parser.add_argument('bar') 
args = parser.parse_args 

, 당신은 prefix chars을 변경할 수 있습니다 : 여기

이 문서에서 예제

parser = argparse.ArgumentParser(prefix_chars='+') 
parser.add_argument('+f', '++foo') 
parser.add_argument('bar') 
args = parser.parse_args 
0

의 끝 argparse docs 페이지에서 기본적인 차이점을 설명합니다.

opts, args = parser.parse_args(sys.argv[1:]) 

args = parser.parse_args(sys.argv[1:]) 

optparse, 모든 인수가 opts 변수에 캡처 플래그. 그 외 모든 것은 args 목록에 있습니다.

args, extras = parser.parse_known_args(sys.argv[1:]) 

extras 문자열가 그 수있는 '

argparse에서

모두 플래그 (또한 선택적 항목)과 positionals가 args 네임

parse_known_args에서 수집은 optparse에 가까운 출력을 준다 파싱한다. 대략 optparse에 의해 반환 된 두 번째 변수에 해당합니다.

대화 형 셸을 실행하고 몇 개의 파서를 정의한 다음 다른 인수로 재생합니다. 그리고 출력물 ('opts', 'args', 'extras')을 인쇄하여 출력물을 확인하십시오.

추가 질문이있는 경우 질문에 샘플 파서와 출력을 포함하십시오.


In [3]: aparser=argparse.ArgumentParser() 
In [4]: aparser.add_argument('-f'); 
In [5]: aparser.add_argument('bar'); 

In [6]: oparser=optparse.OptionParser() 
In [7]: oparser.add_option('-f') 

optparse의 파싱 :

In [22]: opts, rest = oparser.parse_args('-f one two'.split()) 
In [23]: opts 
Out[23]: <Values at 0xaca3a02c: {'f': 'one'}> 
In [24]: rest 
Out[24]: ['two'] 
In [25]: opts.f 
Out[25]: 'one' 

파싱 argparse

In [26]: args = aparser.parse_args('-f one two'.split()) 
In [27]: args 
Out[27]: Namespace(bar='two', f='one') 
In [28]: args.f 
Out[28]: 'one' 
In [29]: args.bar 
Out[29]: 'two' 

parse_known_args :

In [30]: args, extras = aparser.parse_known_args('-f one two three'.split()) 
In [31]: args 
Out[31]: Namespace(bar='two', f='one') 
In [32]: extras 
Out[32]: ['three']