반응형
정수를 포함하는 두 개의 목록을 파이썬 코드에 인수로 전달하려고했습니다. 그러나 sys.argv [i]
는 매개 변수를 문자열 목록으로 가져옵니다.
입력은 다음과 같습니다.
$ python filename.py [2,3,4,5] [1,2,3,4]
목록을 변환하기 위해 다음 해킹을 발견했습니다.
strA = sys.argv[1].replace('[', ' ').replace(']', ' ').replace(',', ' ').split()
strB = sys.argv[2].replace('[', ' ').replace(']', ' ').replace(',', ' ').split()
A = [float(i) for i in strA]
B = [float (i) for i in strB]
이 작업을 수행하는 더 좋은 방법이 있습니까?
해결 방법
명령 줄 인수는 항상 문자열로 전달됩니다. 필요한 데이터 유형으로 직접 구문 분석해야합니다.
>>> input = "[2,3,4,5]"
>>> map(float, input.strip('[]').split(','))
[2.0, 3.0, 4.0, 5.0]
>>> A = map(float, input.strip('[]').split(','))
>>> print(A, type(A))
([2.0, 3.0, 4.0, 5.0], <type 'list'>)
2019 년 1 월 편집 이 답변은 여전히 약간의 조치를 취하는 것 같으므로 argparse 문서에서 직접 가져온 다른 옵션을 추가하겠습니다.
action = append
를 사용하여 반복되는 인수를 단일 목록으로 수집 할 수 있습니다.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append')
>>> parser.parse_args('--foo 1 --foo 2'.split())
Namespace(foo=['1', '2'])
이 경우 각 목록 항목에 대해 한 번씩 -foo?
를 전달합니다. OP 예제 사용 : python filename.py --foo 2 --foo 3 --foo 4 --foo 5
는 foo = [2,3,4,5] 코드>
참조 페이지 https://stackoverflow.com/questions/32761999
반응형
'파이썬' 카테고리의 다른 글
파이썬 scikit-learn에서 자신 만의 스코어러 기능을 생성 / 사용자 정의하는 방법은 무엇입니까? (0) | 2020.11.18 |
---|---|
파이썬 Python의 문자열에서 날짜 추출 (0) | 2020.11.18 |
파이썬 개수 및 그룹화 기준에 해당하는 Django (0) | 2020.11.18 |
파이썬 __getattr__과 __getattribute__의 차이점 (0) | 2020.11.18 |
파이썬 'PipelinedRDD'개체에는 PySpark에 'toDF'속성이 없습니다. (0) | 2020.11.18 |
댓글