반응형
argparse를 사용하는 Python의 선택적 stdin
매우 유용한 구문을 찾았습니다.
parser.add_argument('-i', '--input-file', type=argparse.FileType('r'), default='-')
입력 파일을 지정하거나 stdin을 사용하기 위해 – 둘 다 내 프로그램에서 원합니다. 그러나 입력 파일이 항상 필요한 것은 아닙니다. 다음 -i
중 하나로 입력을 사용 하거나 리디렉션 하지 않는 경우
$ someprog | my_python_prog
$ my_python_prog < inputfile
파이썬 프로그램이 입력을 기다리지 않기를 바랍니다. 그냥 따라 가서 기본값을 사용하기를 원합니다.
argparse에 대한 표준 라이브러리 문서 는 선택적인 입력 / 출력 파일을 허용하는이 솔루션을 제안합니다.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
... default=sys.stdin)
>>> parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
... default=sys.stdout)
>>> parser.parse_args(['input.txt', 'output.txt'])
Namespace(infile=<_io.TextIOWrapper name='input.txt' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='output.txt' encoding='UTF-8'>)
>>> parser.parse_args([])
Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)
isatty 를 사용 하여 프로그램이 대화 형 세션에 있는지 또는 파일에서 읽는지 감지 합니다.
if not sys.stdin.isatty(): # Not an interactive device.
# ... read from stdin
그러나 일관성과 재현성을 위해 표준을 따르고 파일 이름이 -
. 당신은 수 있도록하는 것이 좋습니다 fileinput
모듈 핸들이 있습니다.
참고 URL : https://stackoverflow.com/questions/7576525/optional-stdin-in-python-with-argparse
반응형
'Programing' 카테고리의 다른 글
PHP 페이지를 이미지로 반환 (0) | 2020.12.04 |
---|---|
명령 줄에서 Android 애플리케이션을 시작하는 방법은 무엇입니까? (0) | 2020.12.04 |
Javascript를 사용하여 다중 선택 상자에서 Ctrl- 클릭의 필요성을 피하는 방법은 무엇입니까? (0) | 2020.12.04 |
Java의 일부 문자열에 대해 참조 비교 (==)가 작동하는 이유는 무엇입니까? (0) | 2020.12.04 |
몇 분 전에 액세스 / 생성 된 파일을 찾는 방법 (0) | 2020.12.04 |