저는 파이썬에서 많은 경험이 없으므로 항상 Google Python Style Guide을 따르려고합니다. 이 안내서에는 다음 문장이 들어 있습니다.파이썬에서 인수를 구문 분석하는 가장 좋은 방법은 무엇입니까?
"스크립트로 사용되는 파일조차도 가져올 수 있어야하며 단순한 가져 오기는 스크립트의 주요 기능을 실행하는 부작용이 없어야합니다."
따라서 __getattr__
을 재정의하는 방법을 검색했으며 다음과 같이 인수 구문 분석에 this ArrtDict class을 사용했습니다.
import argparse
class AttrDict(dict):
def __init__(self, *args, **kwargs):
super(AttrDict, self).__init__(*args, **kwargs)
self.__dict__ = self
def parse_args(args):
if isinstance(args, list):
parser = argparse.ArgumentParser()
parser.add_argument('--args1')
return parser.parse_args(args)
else:
return AttrDict(args)
def main(args):
args = parse_args(args)
if __name__ == '__main__':
import sys
main(sys.argv[1:])
파이썬에서 인수 구문 분석을 수행하는 가장 좋은 방법은 무엇입니까?
if __name__ == '__main__':
그리고 스크립트를 실행하는 모든 코드가 그 블록에 나타나도록 :
오버라이드 (override) 할 필요가 없습니다
Python argparse library
: 여기에 문서에 대한 링크입니다. –
@EdwardMoseley 좋아, 빨리 옮길 것이지만 40 분에 한 번만 게시 할 수 있기 때문에 지금 당장은 할 수 없습니다. – Han
'argparse.Namespace'는'AttrDict'처럼 행동하는 클래스입니다. 'parse_args'는 그러한 객체를 반환하지만, 당신 자신을 만들 수 있습니다. 'args = argparse.Namespace (foo ='bar ', verbose = True)'. – hpaulj