argparse
은 옵션의 인수에 유형 변환을 적용하고 기본값이 문자열 인 경우 이들의 기본값을 적용합니다. 그러나,이 위치 인수를 위해 그렇게하지 않는 것 같습니다 : 예상대로 내가 file
--file
에 변경하는 경우argparse를 위치 변환 인수의 기본값으로 유형 변환을 적용하려면 어떻게해야합니까?
import argparse as ap
p = ap.ArgumentParser()
p.add_argument('file', nargs='*',
metavar='FILE',
default='-',
type=ap.FileType(),
help='Input files. - is stdin. Default: %(default)s')
print(p.parse_args([]))
# Namespace(file='-')
print(p.parse_args(['-']))
# Namespace(file=[<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>])
(Ideone)
이 때문에 이러한 옵션 인수 것을는 default
값이 변환됩니다.
명시 적으로 argparse.FileType()('-')
을 default
으로 전달하는 것보다 나은 옵션이 있습니까?
첫 부분은 충분히 이해하지만이 부분과 어떻게 관련이 있는지 알지 못합니다. 두 번째로, 내가 사용하는 기본 파일이''-''대신에''/ some/file''이라면 어떨까요? – muru
'default = ap.FileType ('/ some/file')'. 기본값은 단순히 정의 된 유형에 의한 처리의 대상이 아닙니다. – chepner
(무언가를 놓치지 않았는지 확인하기 위해 소스 코드를 확인하고 있습니다. 복잡한 프로세스입니다.) – chepner