Traffine I/O

Bahasa Indonesia

2023-03-11

Argumen Command-Line dengan argparse di Python

Apa itu argparse

argparse adalah modul standar dari library Python yang memungkinkan programmer untuk dengan mudah membuat antarmuka baris perintah untuk program Python mereka. argparse menyediakan cara yang nyaman untuk mem-parsing argument dan opsi baris perintah, memvalidasi, dan menghasilkan pesan bantuan penggunaan. argparse merupakan perbaikan dari modul optparse yang lebih lama dan menyediakan banyak fitur tambahan.

Dengan argparse, Anda dapat mendefinisikan kumpulan argumen baris perintah yang diharapkan program Anda, menentukan jenisnya, menetapkan nilai default, menyediakan pesan bantuan, mengelompokkan argumen, dan lain-lain. Anda juga dapat menangani kesalahan dan pengecualian yang terjadi saat mem-parsing argumen baris perintah.

Salah satu keunggulan utama argparse adalah fleksibilitasnya. Anda dapat mendefinisikan antarmuka baris perintah yang sederhana atau kompleks, tergantung pada persyaratan program Anda. argparse memungkinkan Anda untuk mendefinisikan argumen posisi, yang merupakan argumen wajib yang harus dipasok dalam urutan tertentu, dan argumen opsional, yang opsional dan dapat diberikan dalam urutan apa saja. Anda juga dapat menentukan beberapa nilai untuk suatu argumen, menentukan nilai default jika argumen tidak diberikan, dan menentukan ketergantungan dan konflik argumen.

Keuntungan lain dari argparse adalah kemudahannya. Anda dapat membuat objek parser dengan memanggil fungsi argparse.ArgumentParser() dan kemudian menambahkan argumen ke dalamnya menggunakan metode add_argument(). argparse secara otomatis menghasilkan pesan bantuan berdasarkan argumen yang Anda definisikan, sehingga memudahkan pengguna untuk memahami cara menggunakan program Anda.

Penggunaan Dasar argparse

Saat menggunakan modul argparse di Python, ada empat langkah utama untuk mem-parsing argumen baris perintah. Dalam artikel ini, saya akan membahas penggunaan dasar argparse dengan memeriksa setiap langkah ini secara detail.

Membuat Objek Parser

Langkah pertama dalam menggunakan argparse adalah membuat objek parser. Ini dilakukan dengan memanggil fungsi argparse.ArgumentParser(), yang mengembalikan objek ArgumentParser baru. Berikut adalah contohnya:

python
import argparse

# Create a new ArgumentParser object
parser = argparse.ArgumentParser()

Menambahkan Argumen ke Parser

Setelah membuat objek ArgumentParser, langkah berikutnya adalah menambahkan argumen ke dalamnya. Argumen ditambahkan menggunakan metode add_argument() dari objek ArgumentParser. Berikut adalah contohnya:

python
# Add a positional argument
parser.add_argument("filename", help="the name of the file to read")

# Add an optional argument
parser.add_argument("-o", "--output", help="the name of the output file")

Dalam contoh ini, kita telah menambahkan dua argumen ke parser. Yang pertama adalah argumen posisi yang disebut filename, yang diperlukan dan harus ditentukan pada baris perintah.

Mem-parsing Argumen dari Command-Line

Langkah terakhir dalam menggunakan argparse adalah mem-parsing argumen dari command-line. Ini dilakukan dengan memanggil metode parse_args() dari objek ArgumentParser. Berikut adalah contohnya:

python
# Parse the command-line arguments
args = parser.parse_args()

# Access the values of the arguments
filename = args.filename
output = args.output

Pada contoh ini, kita telah mem-parsing argumen dari command-line dan menyimpan nilai-nilainya di dalam objek args. Kita dapat mengakses nilai-nilai dari argumen dengan mengakses atribut dari objek args.

Menjalankan Skrip Python

Setelah Anda mendefinisikan objek parser Anda dan menambahkan argumen, Anda siap menjalankan skrip Python dengan argumen dari command-line. Untuk melakukan ini, cukup jalankan skrip Anda di terminal atau prompt perintah, dan sertakan argumen yang ingin Anda gunakan.

Berikut adalah contoh bagaimana menjalankan skrip Python dengan argumen dari command-line:

bash
$ python my_script.py arg1 arg2 -o output_file.txt

Dalam contoh ini, my_script.py adalah nama skrip Python yang ingin Anda jalankan, arg1 dan arg2 adalah argumen-posisional, dan -o output_file.txt adalah argumen opsional.

Setelah skrip dijalankan, argparse secara otomatis mem-parsing argumen dari command-line dan menyimpan nilai-nilainya di dalam objek args. Anda kemudian dapat mengakses nilai-nilai dari argumen di skrip Python Anda dengan menggunakan atribut dari objek args.

Misalnya, jika Anda mendefinisikan sebuah argumen-posisional yang bernama filename dan sebuah argumen opsional yang bernama --output, Anda dapat mengakses nilai-nilainya seperti ini:

python
import argparse

# Create a new ArgumentParser object
parser = argparse.ArgumentParser()

# Add a positional argument
parser.add_argument("filename", help="the name of the file to read")

# Add an optional argument
parser.add_argument("-o", "--output", help="the name of the output file")

# Parse the command-line arguments
args = parser.parse_args()

# Access the values of the arguments
filename = args.filename
output = args.output

# Use the values of the arguments in your Python script
print("Reading file:", filename)
if output:
    print("Writing output to file:", output)

Pada contoh ini, nilai dari argumen filename dan output diakses menggunakan atribut objek args. Nilai-nilai ini kemudian dapat digunakan dalam skrip Python.

Penggunaan Argparse yang Advanced

Meskipun penggunaan dasar argparse di Python menyediakan cara yang kuat untuk mengurai argumen baris perintah, modul ini juga menawarkan banyak fitur canggih yang dapat membuat antarmuka baris perintah Anda lebih fleksibel dan ramah pengguna. Dalam artikel ini, saya akan membahas beberapa opsi penggunaan advanced untuk argparse, termasuk menentukan tipe argumen, menetapkan nilai default, menentukan pesan bantuan argumen, mengelompokkan argumen, dan mengontrol keluaran pesan bantuan.

Menentukan Tipe Argumen

Secara default, argparse memperlakukan semua argumen baris perintah sebagai string. Namun, Anda dapat menentukan tipe argumen menggunakan parameter type dari metode add_argument(). Berikut beberapa contohnya:

python
# Specify an integer argument
parser.add_argument("count", type=int, help="the number of items to process")

# Specify a float argument
parser.add_argument("value", type=float, help="the value of the item")

Dalam contoh ini, kita menentukan argumen count sebagai integer dan argumen value sebagai float. Hal ini memungkinkan argparse untuk secara otomatis mengonversi masukan string menjadi tipe yang benar, sehingga memudahkan pengolahan data masukan di skrip Python Anda.

Menetapkan Nilai Default

Anda juga dapat menetapkan nilai default untuk argumen opsional menggunakan parameter default dari metode add_argument(). Berikut contohnya:

python
# Specify an optional argument with a default value
parser.add_argument("-o", "--output", default="output.txt", help="the name of the output file")

Dalam contoh ini, kita menentukan argumen opsional bernama output, dan menetapkan nilai defaultnya sebagai output.txt. Jika pengguna tidak menentukan nilai untuk argumen ini di baris perintah, argparse akan menggunakan nilai default.

Menentukan Pesan Bantuan Argumen

Untuk membuat antarmuka baris perintah Anda lebih ramah pengguna, Anda dapat menentukan pesan bantuan untuk setiap argumen menggunakan parameter help dari metode add_argument(). Berikut contohnya:

python
# Specify a help message for an argument
parser.add_argument("filename", help="the name of the file to read")

Dalam contoh ini, kita menentukan pesan bantuan untuk argumen filename, yang akan ditampilkan ketika pengguna menjalankan skrip dengan opsi --help atau -h.

Mengelompokkan Argumen

Anda juga dapat mengelompokkan argumen yang terkait menggunakan metode add_argument_group(). Berikut contohnya:p related arguments together using the add_argument_group() method. Here's an example:

python
# Create a group of related arguments
group = parser.add_argument_group("Input Options")

# Add arguments to the group
group.add_argument("-f", "--file", help="the name of the input file")
group.add_argument("-d", "--directory", help="the name of the input directory")

Dalam contoh ini, kita telah membuat kelompok argumen terkait yang disebut Input Options, dan menambahkan opsi -f dan -d ke dalam kelompok. Ini membuat lebih mudah bagi pengguna untuk memahami opsi mana yang terkait satu sama lain, dan dapat membuat antarmuka baris perintah lebih intuitif digunakan.

Mengontrol Output Pesan Bantuan

Akhirnya, Anda dapat mengontrol output pesan bantuan menggunakan parameter formatter_class dari metode ArgumentParser(). Berikut ini adalah contohnya:

python
# Specify a custom formatter for help messages
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)

Dalam contoh ini, kita telah menentukan formatter khusus untuk pesan bantuan dengan menggunakan kelas RawTextHelpFormatter. Formatter ini memungkinkan Anda untuk menyertakan baris baru dan format lainnya dalam pesan bantuan Anda, membuatnya lebih mudah dibaca dan dipahami.

Menangani Kesalahan dan Pengecualian

Sementara argparse di Python menyediakan cara yang kuat untuk mem-parsing argumen baris perintah, penting untuk menangani kesalahan dan pengecualian yang dapat terjadi saat mem-parsing argumen tersebut. Dalam artikel ini, saya akan membahas beberapa kesalahan dan pengecualian umum yang dapat terjadi saat menggunakan argparse, dan bagaimana menanganinya.

Menangani Nilai Argumen yang Tidak Valid

Salah satu kesalahan umum yang dapat terjadi saat menggunakan argparse adalah memberikan nilai yang tidak valid untuk suatu argumen. Misalnya, jika suatu argumen mengharapkan nilai bilangan bulat, tetapi pengguna memberikan nilai string, argparse akan memunculkan pengecualian. Anda dapat menangani pengecualian ini dengan menggunakan blok try-except. Berikut ini adalah contohnya:

python
import argparse

# Create a new ArgumentParser object
parser = argparse.ArgumentParser()

# Add an integer argument
parser.add_argument("count", type=int, help="the number of items to process")

try:
    # Parse the command-line arguments
    args = parser.parse_args()

except ValueError:
    print("Error: invalid argument value")

Dalam contoh ini, kita telah menambahkan argumen integer yang disebut count, dan membungkus panggilan metode parse_args() dalam blok try-except. Jika pengguna memberikan nilai yang tidak valid untuk argumen ini, argparse akan menimbulkan pengecualian ValueError, yang kita tangkap dan tangani di blok except.

Menangani Argumen yang Hilang

Kesalahan lain yang dapat terjadi saat menggunakan argparse adalah hilangnya argumen yang diperlukan. Jika sebuah argumen ditandai sebagai diperlukan, tetapi pengguna tidak memberikan nilai untuk itu, argparse akan menimbulkan pengecualian. Anda juga dapat menangani pengecualian ini menggunakan blok try-except. Berikut adalah contohnya:

python
import argparse

# Create a new ArgumentParser object
parser = argparse.ArgumentParser()

# Add a required argument
parser.add_argument("filename", help="the name of the file to read", required=True)

try:
    # Parse the command-line arguments
    args = parser.parse_args()

except argparse.ArgumentError:
    print("Error: missing required argument")

Dalam contoh ini, kita menandai argumen filename sebagai diperlukan, dan membungkus panggilan metode parse_args() dalam blok try-except. Jika pengguna tidak memberikan nilai untuk argumen ini, argparse akan menimbulkan pengecualian ArgumentError, yang kita tangkap dan tangani di blok except.

Menangani Argumen yang Bertentangan

Terakhir, argparse juga dapat menimbulkan pengecualian jika pengguna memberikan argumen yang bertentangan. Misalnya, jika pengguna memberikan opsi verbose dan quiet, opsi-opsi ini bertentangan dan argparse akan menimbulkan pengecualian. Anda juga dapat menangani pengecualian ini menggunakan blok try-except. Berikut adalah contohnya:

python
import argparse

# Create a new ArgumentParser object
parser = argparse.ArgumentParser()

# Add conflicting arguments
parser.add_argument("-v", "--verbose", help="increase verbosity")
parser.add_argument("-q", "--quiet", help="decrease verbosity")

try:
    # Parse the command-line arguments
    args = parser.parse_args()

except argparse.ArgumentError:
    print("Error: conflicting arguments")

Dalam contoh ini, kita menambahkan argumen yang bertentangan yang disebut verbose dan quiet, dan membungkus panggilan metode parse_args() dalam blok try-except. Jika pengguna memberikan kedua argumen ini dalam baris perintah, argparse akan menimbulkan pengecualian ArgumentError, yang kita tangkap dan tangani di blok except.

Referensi

https://docs.python.org/3/library/argparse.html

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!