Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Linda Hamiltonasal
2024-10-31 12:26:03508semak imbas

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>

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>

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>

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!

Kenyataan:
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