반응형
Python argparse 입력 인수에 대한 날짜 형식 지정
일부 명령줄 입력이 필요한 Python 스크립트가 있으며 사용 중입니다.argparse
그들을 파싱하기 위해.설명서가 약간 혼란스러웠고 입력 매개 변수의 형식을 확인할 방법을 찾을 수 없었습니다.형식을 확인한다는 의미는 다음 예제 스크립트를 사용하여 설명합니다.
parser.add_argument('-s', "--startdate", help="The Start Date - format YYYY-MM-DD ", required=True)
parser.add_argument('-e', "--enddate", help="The End Date format YYYY-MM-DD (Inclusive)", required=True)
parser.add_argument('-a', "--accountid", type=int, help='Account ID for the account for which data is required (Default: 570)')
parser.add_argument('-o', "--outputpath", help='Directory where output needs to be stored (Default: ' + os.path.dirname(os.path.abspath(__file__)))
옵션을 확인해야 합니다.-s
그리고.-e
사용자에 의한 입력이 형식에 있는지 여부YYYY-MM-DD
에 옵션이 있습니까?argparse
누가 이 일을 성취하는지 내가 모르는 것?
그
type
의 키워드 인수add_argument()
필요한 유형 검사 및 유형 변환을 수행할 수 있습니다...에 대한 주장.type
단일 문자열을 허용하는 임의의 호출 가능입니다.
다음과 같은 작업을 수행할 수 있습니다.
def valid_date(s):
try:
return datetime.strptime(s, "%Y-%m-%d")
except ValueError:
msg = "not a valid date: {0!r}".format(s)
raise argparse.ArgumentTypeError(msg)
그러면 그것을 다음과 같이 사용합니다.type
:
parser.add_argument(
"-s",
"--startdate",
help="The Start Date - format YYYY-MM-DD",
required=True,
type=valid_date
)
위의 답변에 추가하기 위해 람다 함수를 한 줄로 유지하려면 람다 함수를 사용할 수 있습니다.예:
parser.add_argument('--date', type=lambda d: datetime.strptime(d, '%Y%m%d'))
오래된 맥락이지만 적어도 그 질문은 여전히 나에게 관련이 있었습니다!
검색 엔진을 통해 이것을 히트시킨 다른 사람들을 위해: 파이썬 3.7에서는 표준을 사용할 수 있습니다..fromisoformat
ISO-8601 준수 날짜를 위해 휠을 재설계하는 대신 클래스 방법(예:
import datetime
parser.add_argument('-s', "--startdate",
help="The Start Date - format YYYY-MM-DD",
required=True,
type=datetime.date.fromisoformat)
parser.add_argument('-e', "--enddate",
help="The End Date format YYYY-MM-DD (Inclusive)",
required=True,
type=datetime.date.fromisoformat)
언급URL : https://stackoverflow.com/questions/25470844/specify-date-format-for-python-argparse-input-arguments
반응형
'programing' 카테고리의 다른 글
함수 반환 유형 및 인수 유형을 아는 방법은 무엇입니까? (0) | 2023.07.16 |
---|---|
SQL COUNT 오버플로 (0) | 2023.07.16 |
ORA-01031: 보기 선택 시 권한 부족 (0) | 2023.07.16 |
파이썬 프로젝트에는 MANIFEST.in 이 필요하며, 그 안에 무엇이 있어야 합니까? (0) | 2023.07.16 |
Oracle: 현재 날짜에 6개월을 추가하는 방법 (0) | 2023.07.16 |