Saya memiliki skrip python yang memerlukan beberapa input baris perintah dan saya menggunakan argparse untuk menguraikannya. Saya menemukan dokumentasinya agak membingungkan dan tidak dapat menemukan cara untuk memeriksa format dalam parameter input. Yang saya maksud dengan memeriksa format dijelaskan dengan skrip contoh ini:
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__)))
Saya perlu memeriksa opsi -s
dan -e
bahwa input oleh pengguna ada dalam format YYYY-MM-DD
. Apakah ada opsi di argparse yang saya tidak tahu yang menyelesaikan ini.
sumber
valid_date()
menganggap argumen yang diberikan adalah string?Hanya untuk menambahkan jawaban di atas, Anda dapat menggunakan fungsi lambda jika Anda ingin menyimpannya dalam satu baris. Sebagai contoh:
Utas lama tetapi pertanyaan itu masih relevan bagi saya setidaknya!
sumber
invalid <lambda> value
Untuk orang lain yang menggunakan ini melalui mesin pencari: dengan Python 3.7, Anda dapat menggunakan
.fromisoformat
metode kelas standar daripada menciptakan kembali roda untuk tanggal yang sesuai dengan ISO-8601, misalnya:sumber
dateutil
's ISO parser mengambil sejumlah fmts tambahan yang masih ISO 8601-2004 compliant. Anda dapat menggunakanimport dateutil.parser
->type=dateutil.parser.isoparse
atautype=dateutil.parser.parse
dateutil
merupakan paket pihak ketiga. Seseorang harus menilai manfaatnya terhadap kerumitan (kecil) untuk menginstalnya secara ekstra. YMMV.