Rumah > pembangunan bahagian belakang > Tutorial Python > Cara Menghuraikan Argumen Baris Perintah Boolean dengan argparse: Mengapa \'--foo False\' Tidak Sentiasa Bermaksud Palsu?

Cara Menghuraikan Argumen Baris Perintah Boolean dengan argparse: Mengapa \'--foo False\' Tidak Sentiasa Bermaksud Palsu?

Linda Hamilton
Lepaskan: 2024-10-31 12:26:03
asal
537 orang telah melayarinya

How to Parse Boolean Command-Line Arguments with argparse: Why

Menghuraikan Argumen Baris Perintah Boolean dengan argparse

Apabila menggunakan argparse untuk menghuraikan hujah boolean, pengguna mungkin menghadapi cabaran jika mereka memasukkan nilai sebagai " --foo True" atau "--foo False." Walaupun andaian intuitif bahawa "--foo False" harus menilai kepada False, argparse mentafsirkannya sebagai Benar. Tingkah laku ini juga berlaku apabila memasukkan rentetan kosong untuk hujah boolean.

Untuk menangani isu ini, argparse menyediakan pilihan penghuraian alternatif untuk bendera boolean:

1. Action=argparse.BooleanOptionalAction (Python 3.9 )

Dengan menyatakan action=argparse.BooleanOptionalAction, argparse akan secara automatik mentafsirkan kehadiran bendera tanpa hujah sebagai Benar, dan ketiadaannya sebagai Palsu. Contohnya:

<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
Salin selepas log masuk

2. Store_True dan Store_False

Untuk versi Python sebelum 3.9, pendekatan berikut boleh digunakan:

<code class="python">parser.add_argument('--feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)</code>
Salin selepas log masuk

Ini membolehkan pengguna mendayakan atau melumpuhkan ciri dengan menghantar "--feature " atau "--tiada-ciri", masing-masing.

3. Fungsi Jenis Tersuai

Jika mahu, fungsi jenis tersuai boleh digunakan untuk mengendalikan penghuraian boolean. Berikut ialah contoh:

<code class="python">def t_or_f(arg):
    ua = str(arg).upper()
    if 'TRUE'.startswith(ua):
        return True
    elif 'FALSE'.startswith(ua):
        return False
    else:
        raise ValueError("Invalid input")</code>
Salin selepas log masuk

Fungsi ini kemudiannya boleh digunakan sebagai hujah jenis apabila menambahkan hujah boolean pada penghurai.

Dengan menggunakan kaedah ini, pengguna boleh menghuraikan perintah boolean dengan berkesan- argumen baris dan pastikan nilai seperti "Salah" ditafsirkan dengan betul.

Atas ialah kandungan terperinci Cara Menghuraikan Argumen Baris Perintah Boolean dengan argparse: Mengapa \'--foo False\' Tidak Sentiasa Bermaksud Palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan