--arg1 value1
형식의 인수 집합을 파이썬 스크립트에 전달하고 {'arg1': 'value1}
사전에서 검색하고 싶습니다. 이를 달성하기 위해 argparse
을 사용하고 싶습니다. parse_known_args
함수는 추가 args를 허용하지만 간단한 목록으로 검색 할 수 있으며 명명되지 않습니다.명명 된 인수를 사용하는 Python parse_known_args
답변
옵션을 두 개의 인수, 이름 및 값을 사용하고 두 개의 인수를 사용하여 사전을 업데이트하는 사용자 지정 동작을 사용하는 옵션을 정의하는 것이 더 좋습니다.
class OptionAppend(Action):
def __call__(self, parser, namespace, values, option_string):
d = getattr(namespace, self.dest)
name, value = values
d[name] = value
p.add_argument("-o", "--option", nargs=2, action=OptionAppend, default={})
그럼 대신 myscript --arg1 value1 --arg2 value2
, 당신은 myscript -o arg1 value1 -o arg2value1
을 작성하고, args = parser.parse_args()
후, 당신은 args.o == {'arg1': 'value1, 'arg2': 'value2'}
있을 것입니다.
이것은 개별적으로 명명 된 변수 집합 대신 관련된 변수 집합을 유지하기 위해 목록이나 사전을 사용하는 것과 다소 비슷합니다.
# Good
v = [x, y, z]
v = { 'key1': x, 'key2': y, 'key3': z}
# Bad
v1 = x
v2 = y
v3 = z
임의의 키/값 쌍 처리 문제는 여러 번 발생했습니다. argparse
에는 이에 대한 기본 메커니즘이 없습니다. 간단한 아마와 -
Is it possible to use argparse to capture an arbitrary set of optional arguments? (지난 5 월부터 거의 중복) parse_know_args
를 사용하고 자신의 사전이 extras
에서 구축하고의
당신의 아이디어는 좋다. 추가 목록을 처리하는 방법은 사용자의 행동 방식 (궁극적으로 '--key', 'value'
쌍)에 따라 달라집니다. 이것은 기본적으로 sys.arv[1:]
을 파싱 한 것과 같습니다.
사용자가 --options key1:value1 key2=value2 "key3 value3"
과 같은 입력을하면 사용자 정의 작업 클래스에서 해당 쌍을 구문 분석 할 수 있습니다 (예 : 구분 기호 등으로 문자열 분리).
--options "{key1: value1, key2: value2}"
과 같은 입력은 type=json.load
과 같은 유형의 기능을 가진 JSON
문자열로 처리 할 수 있습니다 (이 부분을 살펴 봐야합니다).
- 1. 명명 된 인수를 처리하기위한 해골 :
- 2. 데코레이터에서의 Python 명명 규칙
- 3. 명명 된 인수를 phantomjs 파일로 전달하는 방법
- 4. 파이썬 argparse : 디스플레이 parse_known_args 사용 문자열
- 5. 호스트 된 응용 프로그램에서 명명 된 인수를 사용하여 함수 호출
- 6. Python 명명 된 파이프 열기 유지
- 7. Clojure - 명명 된 인수
- 8. Python 명명 규칙
- 9. 파이썬에서 가변 길이가 아닌 인수로 명명 된 인수를 사용
- 10. ironpython에서 명명 된 인수와 선택적 인수를 함께 사용할 수 있습니까?
- 11. 명명 된 인수를 어떻게 레이크 작업에 전달할 수 있습니까?
- 12. 명명 된 인수와 선택적 인수를 사용하여 생성자를 구별합니다.
- 13. 명명 된 인수를 JavaScript 함수에 전달하는 방법. 어떤 문제?
- 14. 디버깅 $ .getJSON() 명명 된 인수를 사용할 때 다른 결과를 전달합니다.
- 15. argparse는 명명 된 인수와 위치 인수를 연관시킬 수 있습니까?
- 16. Resharper를 사용하여 명명 된 함수 인수를 자동으로 재정렬하는 방법은 무엇입니까?
- 17. 기본 명명 된 인수를 scala의 다른 인수로 정의합니다.
- 18. PHP, 명명 된 인수를 사용하여 COM 개체 함수 호출
- 19. Django 뷰 메서드에 명명 된 인수를 전달하는 방법은 무엇입니까?
- 20. 명명 된 키워드 인수를 함수 서명에 추가하는 방법
- 21. 루아를 호출하는 것은 파이썬 방식, 즉 명명 된 인수를 사용합니다.
- 22. 하이에서 파이썬 함수로 명명 된 인수를 전달하는 방법
- 23. Python Fileconveyor 명명 문제
- 24. 캡처 된 명명 된 그룹의 수와 Python 정규 표현식에서 명명 된 그룹의 수
- 25. 명명 된 파이프
- 26. Python : * args ** kwargs를 사용하여 선택적으로 명명 된 변수 전달
- 27. tkinter에서 명명 된 색상
- 28. C++을 사용하는 명명 된 파이프
- 29. 동일하게 명명 된 끝점을 사용하는 다중 서비스
- 30. Windows에서 명명 된 파이프를 사용하는 경우?
당신은 단순히'add_argument' 메소드를 사용하여 옵션을 정의 할 수 있습니다. 'parse_known_args'는'add_argument'를 통해 정의 된 모든 옵션을 구문 분석하고 나머지 명령 행을 리턴하는 메소드입니다.'parse_args'를 사용하면 나머지 인수가있을 경우 오류가 발생합니다. – Bakuriu
추가 인수는 선험적으로 알 수없는 이름/값이 될 수 있습니다. –
그런 다음'argparse'는 그걸로 무엇을해야하는지 알지 못합니다. 그것은'parse_known_args'의 요점입니다 : ** 당신 **은 나머지 인자들을 수동으로 처리해야합니다. – Bakuriu