Python

Cara Menambah Argumen Baris Perintah ke Skrip Python

Cara Menambah Argumen Baris Perintah ke Skrip Python

Sekiranya anda telah mengembangkan skrip atau aplikasi Python yang dimaksudkan untuk dijalankan terutamanya di emulator terminal atau bahkan aplikasi GUI, menambahkan argumen baris perintah dapat meningkatkan kegunaannya, kebolehbacaan kod, struktur aplikasi dan keramahan keseluruhan aplikasi untuk pengguna akhir. Argumen baris perintah ini juga disebut "pilihan" atau "suis" dan berfungsi sama dengan argumen yang biasanya anda lihat dalam skrip bash dan program berdasarkan C / C ++ lain.

Untuk menambahkan argumen ke skrip Python, anda harus menggunakan modul bawaan bernama "argparse". Seperti namanya, menguraikan argumen baris perintah yang digunakan semasa melancarkan skrip atau aplikasi Python. Argumen yang dihuraikan ini juga diperiksa oleh modul "argparse" untuk memastikan bahawa mereka adalah "jenis" yang tepat. Kesalahan ditimbulkan jika terdapat nilai yang tidak sah dalam argumen.

Penggunaan modul argparse dapat difahami dengan lebih baik melalui contoh. Berikut adalah beberapa contoh kod yang akan memulakan anda dengan modul argparse.

Contoh 1: Hasilkan Argumen Bantuan dan Mesej

Pertimbangkan contoh kod di bawah:

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
args = penghurai.parse_args ()

Pernyataan pertama mengimport modul "argparse". Seterusnya, contoh baru dari objek "ArgumentParser" dibuat dan penerangan ringkas untuk program diberikan sebagai argumen. Objek ArgumentParser diperlukan untuk menukar nilai argumen baris perintah kepada jenis data yang difahami oleh Python. Ini dilakukan dengan kaedah "parse_args" dari objek ArgumentParser, seperti yang ditunjukkan dalam pernyataan terakhir.

Dengan andaian bahawa anda telah menyimpan contoh kod yang dinyatakan di atas dalam fail bernama “test.py ”, menjalankan perintah di bawah ini akan memberi anda mesej bantuan yang berkaitan dengan program.

$ ./ ujian.py -h
$ ./ ujian.py - tolong

Anda harus mendapat beberapa output yang serupa dengan ini:

penggunaan: ujian.py [-h]
Program ujian.
hujah pilihan:
-h, --membantu menunjukkan mesej bantuan ini dan keluar

Perhatikan bahawa tidak ada logik untuk menangani argumen yang dihuraikan dan mengubahnya menjadi objek yang telah ditambahkan ke contoh kod yang disebutkan di atas. Oleh itu, mesej pertolongan untuk argumen individu tidak ditunjukkan dalam output. Sebaik sahaja anda menambah logik untuk menangani nilai argumen yang dihuraikan dalam program anda, mesej bantuan akan mula menunjukkan keterangan untuk argumen individu.

Contoh 2: Mengendalikan Argumen Tali

Untuk menambahkan argumen yang boleh diterima oleh skrip python anda, anda perlu menggunakan kaedah "add_argument". Lihat kod berikut:

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
menghuraikan.add_argument ("print_string", help = "Mencetak argumen yang disediakan.")
args = penghurai.parse_args ()
mencetak (berhujah.print_string)

Pernyataan baru telah ditambahkan yang menunjukkan penggunaan kaedah "add_argument". Segala argumen yang ditambahkan ketika melancarkan skrip akan dianggap sebagai objek "print_string" oleh "ArgumentParser".

Perhatikan bahawa secara lalai, metode "add_argument" memperlakukan nilai yang diambil dari argumen sebagai rentetan, jadi anda tidak perlu secara jelas menentukan "jenis" dalam hal ini. Nilai lalai "Tidak Ada" juga diberikan pada argumen tambahan, kecuali diganti.

Sekali lagi lihat mesej bantuan:

penggunaan: ujian.py [-h] [cetak_string]
Program ujian.
hujah kedudukan:
print_string Mencetak hujah yang disediakan.
hujah pilihan:
-h, --membantu menunjukkan mesej bantuan ini dan keluar

Salah satu baris dalam output mengatakan "argumen kedudukan". Oleh kerana tidak ada kata kunci untuk argumen yang ditentukan, saat ini argumen dianggap sebagai "argumen kedudukan" di mana pesanan dan kedudukan argumen yang dibekalkan mempunyai kesan langsung pada program. Hujah posisi juga wajib, kecuali anda mengubah tingkah laku mereka secara manual.

Untuk menentukan dan menguraikan argumen pilihan, anda dapat menggunakan "-" (tanda hubung ganda) dan mengubah nilai lalai mereka menggunakan argumen "lalai".

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
menghuraikan.add_argument ("- print_string", help = "Mencetak argumen yang disediakan.", default =" Rentetan rawak.")
args = penghurai.parse_args ()
mencetak (berhujah.print_string)

Sekarang apabila anda menjalankan "ujian.skrip py "tanpa sebarang argumen, anda harus mendapatkan" Rentetan rawak."Sebagai output. Anda juga boleh menggunakan kata kunci “-print_string” untuk mencetak rentetan pilihan anda.

$ ./ ujian.py --print_string LinuxHint.com LinuxHint.com

Perhatikan bahawa anda boleh menjadikan argumen pilihan wajib dengan menggunakan argumen tambahan "wajib = Benar".

Terakhir, anda juga dapat menentukan versi pendek dari argumen menggunakan “-” (tanda sempang tunggal) untuk mengurangkan verbositas.

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
menghuraikan.add_argument (“- p”, "--print_string", help = "Mencetak argumen yang disediakan.", default =" Rentetan rawak.")
args = penghurai.parse_args ()
mencetak (berhujah.print_string)

Menjalankan arahan berikut akan memberikan hasil yang sama seperti di atas:

$ ./ ujian.py -p LinuxHint.com

Contoh 3: Mengendalikan Hujah Integer

Untuk menangani argumen yang memerlukan nilai bilangan bulat, anda harus menetapkan kata kunci "jenis" ke "int" untuk membenarkan pengesahan dan kesalahan yang berlaku sekiranya keadaan tidak dipenuhi.

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
menghuraikan.add_argument ("- p", "--print_string", help = "Mencetak argumen yang disediakan.", taip = int)
args = penghurai.parse_args ()
mencetak (berhujah.print_string)

Cuba jalankan arahan berikut:

$ ./ ujian.py -p LinuxHint.com

Anda seharusnya mendapat ralat seperti ini:

penggunaan: ujian.py [-h] [-p PRINT_STRING]
ujian.py: ralat: argumen -p / - print_string: nilai int tidak sah: 'LinuxHint.com '

Membekalkan nilai integer akan memberikan hasil yang betul:

$ ./ ujian.py -p 1000 1000

Contoh 4: Tangani Togol Betul dan Salah

Anda boleh menyampaikan argumen tanpa nilai untuk memperlakukannya sebagai bendera Betul dan Salah menggunakan argumen "tindakan".

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
menghuraikan.add_argument ("- p", "--print_string", help = "Mencetak argumen yang disediakan.", action =" store_true ")
args = penghurai.parse_args ()
mencetak (berhujah.print_string)

Jalankan arahan di bawah untuk mendapatkan "Benar" ringkas sebagai output:

$ ./ ujian.py -p

Sekiranya anda menjalankan skrip tanpa argumen "-p", nilai "False" akan diberikan. Nilai "store_true" dari kata kunci "action" memberikan nilai "True" ke variabel "print_string" setiap kali argumen "-p" dinyatakan secara eksplisit, jika tidak False ditetapkan pada pemboleh ubah.

Contoh 5: Perlakukan Nilai Hujah sebagai Senarai

Sekiranya anda ingin mendapatkan beberapa nilai sekaligus dan menyimpannya dalam senarai, anda perlu memberikan kata kunci "nargs" dalam format berikut:

import argparse
penghurai = argparse.ArgumentParser (keterangan = 'Program ujian.')
menghuraikan.add_argument ("- p", "--print_string", help = "Mencetak argumen yang disediakan.", nargs = '*')
args = penghurai.parse_args ()
mencetak (berhujah.print_string)

Jalankan arahan berikut untuk menguji kod di atas:

$ ./ ujian.py -p "a" "b"

Anda harus mendapat beberapa output seperti ini:

['a', 'b']

Kesimpulannya

Modul "argparse" cukup komprehensif dengan banyak pilihan untuk mengubah tingkah laku aplikasi baris perintah dan menguraikan nilai yang dibekalkan pengguna. Contoh-contoh ini hanya menyentuh penggunaan asas modul "argparse". Untuk aplikasi lanjutan dan kompleks, anda mungkin memerlukan pelaksanaan yang berbeza. Lawati dokumentasi rasmi untuk penjelasan lengkap mengenai modul.

Permainan Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar anda ketika menggunakan Linux-ia juga dapat menjadi sumber hiburan kerana anda dapat menggunakannya untuk m...
Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Sekiranya anda suka bermain permainan di Linux dengan gamepad dan bukannya sistem input papan kekunci dan tetikus biasa, ada beberapa aplikasi berguna...
Alat Berguna untuk Pemain Linux
Sekiranya anda suka bermain permainan di Linux, kemungkinan anda telah menggunakan aplikasi dan utiliti seperti Wine, Lutris dan OBS Studio untuk meni...