Cara Menambah Argumen Baris Perintah ke Skrip Python

How Add Command Line Arguments Python Script



Sekiranya anda telah mengembangkan skrip atau aplikasi Python yang dimaksudkan terutama dijalankan di emulator terminal atau bahkan aplikasi GUI, menambahkan argumen baris perintah dapat meningkatkan kegunaannya, keterbacaan 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 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 ia 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:



mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

berhujah= menghuraikan.parse_args()

Pernyataan pertama mengimport modul argparse. Seterusnya, contoh baru 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 objek ArgumentParser, seperti yang ditunjukkan dalam pernyataan terakhir.





Dengan mengandaikan 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-menolong

Anda harus mendapat beberapa output yang serupa dengan ini:



penggunaan: test.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 menukarnya menjadi objek yang telah ditambahkan ke sampel kod yang disebutkan di atas. Oleh itu, mesej pertolongan untuk argumen individu tidak ditunjukkan dalam output. Setelah anda menambahkan 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:

mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

menghuraikan.add_argument('cetak_string', menolong='Mencetak hujah yang diberikan.')

berhujah= menghuraikan.parse_args()

mencetak(berhujah.cetak_string)

Pernyataan baru telah ditambahkan yang menunjukkan penggunaan kaedah add_argument. Segala argumen yang ditambahkan semasa 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 menentukan jenisnya secara eksplisit. Nilai lalai dari Tiada juga diberikan pada argumen tambahan, kecuali diganti.

Sekali lagi lihat mesej bantuan:

penggunaan: test.py [-h] [print_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 urutan 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 boleh menggunakan - (tanda hubung dua kali) dan mengubah nilai lalai mereka menggunakan argumen lalai.

mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

menghuraikan.add_argument('- print_string', menolong='Mencetak hujah yang diberikan.',lalai=KErawak tali.)

berhujah= menghuraikan.parse_args()

mencetak(berhujah.cetak_string)

Sekarang apabila anda menjalankan skrip test.py tanpa sebarang argumen, anda akan mendapat rentetan rawak. sebagai output. Anda juga boleh menggunakan kata kunci –print_string untuk mencetak rentetan pilihan anda.

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

Perhatikan bahawa anda boleh menjadikan argumen pilihan wajib dengan menggunakan tambahan yang diperlukan = Hujah benar.

Terakhir, anda juga dapat menentukan versi pendek dari argumen menggunakan - (satu tanda sempang) untuk mengurangkan ketajaman.

mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

menghuraikan.add_argument(-p, '- print_string', menolong='Mencetak hujah yang diberikan.',lalai=KErawak tali.)

berhujah= menghuraikan.parse_args()

mencetak(berhujah.cetak_string)

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

$ ./ujian.py-p LinuxHint.dengan

Contoh 3: Mengendalikan Hujah Integer

Untuk menangani argumen yang memerlukan nilai integer, anda perlu menetapkan jenis kata kunci ke int untuk membenarkan pengesahan dan membuang kesalahan sekiranya keadaan tidak dipenuhi.

mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

menghuraikan.add_argument('-p', '- print_string', menolong='Mencetak hujah yang diberikan.', menaip=int)

berhujah= menghuraikan.parse_args()

mencetak(berhujah.cetak_string)

Cuba jalankan arahan berikut:

$ ./ujian.py-p LinuxHint.dengan

Anda seharusnya mendapat ralat seperti ini:

penggunaan: test.py [-h] [-p PRINT_STRING]

test.py: error: argument -p / - print_string: nilai int tidak sah: 'LinuxHint.com'

Membekalkan nilai integer akan memberi anda hasil yang betul:

$ ./ujian.py-p10001000

Contoh 4: Tangani Togol Betul dan Salah

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

mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

menghuraikan.add_argument('-p', '- print_string', menolong='Mencetak hujah yang diberikan.',tindakan='kedai_true')

berhujah= menghuraikan.parse_args()

mencetak(berhujah.cetak_string)

Jalankan perintah di bawah ini untuk mendapatkan True sederhana sebagai output:

$ ./ujian.py-p

Sekiranya anda menjalankan skrip tanpa argumen -p, nilai Palsu akan diberikan. Nilai_penyimpanan kata kunci tindakan memberikan nilai Benar pada pemboleh ubah print_string setiap kali argumen -p dinyatakan secara eksplisit, jika tidak, False diberikan kepada 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 narg dalam format berikut:

mengimportberhujah

menghuraikan =berhujah.Pembahas Argument(penerangan='Program ujian.')

menghuraikan.add_argument('-p', '- print_string', menolong='Mencetak hujah yang diberikan.',nargs='*')

berhujah= menghuraikan.parse_args()

mencetak(berhujah.cetak_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.