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 terutama dijalankan di emulator terminal atau bahkan aplikasi GUI, maka menambahkan argumen baris perintah dapat meningkatkan kegunaannya, keterbacaan kod, struktur aplikasi, dan keseluruhan aplikasi yang mudah digunakan 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 terbina dalam 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". Selanjutnya, contoh baru dari objek "ArgumentParser" dibuat, dan penerangan ringkas mengenai 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 bantuan untuk mesej yang berkaitan dengan program.

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

Anda harus mendapat beberapa output yang serupa dengan ini:

penggunaan: ujian.py [-h]
Argumen pilihan program ujian:
-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 dapat 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 metode "add_argument". Segala argumen yang ditambahkan ketika melancarkan skrip akan dianggap sebagai objek "print_string" oleh "ArgumentParser".

Perhatikan bahawa secara lalai, kaedah "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]
Hujah kedudukan program ujian:
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 posisi" di mana urutan dan kedudukan argumen yang diberikan 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 "-" (double-dash) dan mengubah nilai lalai mereka menggunakan argumen "default".

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 semasa 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 ketajaman.

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 memberi anda 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.

Cara Memasang League Of Legends di Ubuntu 14.04
Sekiranya anda peminat League of Legends, maka ini adalah peluang bagi anda untuk menguji menjalankan League of Legends. Perhatikan bahawa LOL disokon...
Pasang permainan Strategi OpenRA terkini di Ubuntu Linux
OpenRA adalah mesin permainan Strategi Masa Nyata / Bebas yang mencipta semula permainan Westwood awal seperti Command & Conquer klasik: Makluman Mera...
Pasang Dolphin Emulator terkini untuk Gamecube & Wii di Linux
Dolphin Emulator membolehkan anda memainkan permainan Gamecube & Wii pilihan anda di Komputer Peribadi Linux (PC). Menjadi emulator permainan sumber ...