Programming, Teknologi

Memakai argparse untuk memberikan argumen pada skrip python

You can read Using argparse to pass arguments into python script if you prefer this article in english translation.

Beberapa waktu yang lalu aku berhadapan dengan kasus menambah dan menghapus nama domain dari ratusan kategori file teks.

Berpikir kasus ini bakalan datang berulang-ulang, aku ambil keputusan bikin skrip python untuk menghemat waktu.

Sempat terinspirasi dari perintah linux: ls yang punya beberapa argumen dengan fungsi unik. Harapanku bahasa python juga punya library untuk bisa menerima lebih dari 1 masukan argumen.

Setelah riset di internet, aku temuin argparse bisa selesaikan masalah argumen masukan ini. Untuk praktiknya, setiap fungsi bisa memiliki argumen masukan terpisah.

Berikut adalah contoh implementasinya.

Fitur program:

  1. Menerima help sebagai argumen untuk menampilkan bantuan
  2. Menerima argumen add untuk menambah nama domain dalam file teks
  3. Menerima argumen delete untuk menghapus nama domain dari file teks

Langkah 1: Membuat parseargumen

Buat file python baru dan simpan sebagai argparse_example.py

import argparse

def process_argument():
    parser = argparse.ArgumentParser(description=r"Script to expedite QA process with 2 functions as described below.")

# TODO : Create sub parser for each function menus

# TODO : Get arguments on main program

Tujuan dari komentar TODO adalah sebagai kerangka program. Di langkah-langkah selanjutnya akan dihapus.

Langkah 2: Membuat subparser untuk setiap fungsi

import argparse

def process_argument():
    parser = argparse.ArgumentParser(description=r"Script to expedite QA process with 2 functions as described below.")

    subparsers = parser.add_subparsers(dest='options', help='choose script action')

    add_parser = subparsers.add_parser('add', help='adding domains to destination category')
    add_parser.add_argument('-n', '--domain_name', action='store', help='Store a domain value')
    add_parser.add_argument('-d', '--destination_category', action='store', help='file path of destination domain')

    delete_parser = subparsers.add_parser('delete', help='deleting domains from source category')
    delete_parser.add_argument('-n', '--domain_name', action='store', help='Store a domain value')
    delete_parser.add_argument('-s', '--source_category', action='store', help='file path of source domain')

    try:
        return parser.parse_args()
    except IOError, msg:
        parser.error(str(msg))

# TODO : Get arguments on main program

Setiap subparser memiliki argumen masukan masing-masing dengan fungsi yang berbeda.

Step 3: Menerima argumen pada program utama

import argparse

def process_argument():
    parser = argparse.ArgumentParser(description=r"Script to expedite QA process with 2 functions as described below.")

    subparsers = parser.add_subparsers(dest='options', help='choose script action')

    add_parser = subparsers.add_parser('add', help='adding domains to destination category')
    add_parser.add_argument('-n', '--domain_name', action='store', help='Store a domain value')
    add_parser.add_argument('-d', '--destination_category', action='store', help='file path of destination domain')

    delete_parser = subparsers.add_parser('delete', help='deleting domains from source category')
    delete_parser.add_argument('-n', '--domain_name', action='store', help='Store a domain value')
    delete_parser.add_argument('-s', '--source_category', action='store', help='file path of source domain')

    try:
        return parser.parse_args()
    except IOError, msg:
        parser.error(str(msg))

def main():
    args = process_argument()

    if args.options == 'delete':
        print 'Deleting ' + args.domain_name + ' from ' + args.source_category + ' is succeeded.'
    elif args.options == 'add':
        print 'Adding ' + args.domain_name + ' on ' + args.destination_category + ' is succeeded.'


if __name__ == "__main__":
    main()

Untuk contoh kali ini, skrip hanya menampilkan pesan bahwa argumen telah berhasil diterima oleh program utama.

Hasil akhir

Jalankan program

Jalankan perintah bantuan global: python argparse_example.py -h

Jalankan perintah bantuan untuk setiap fungsi

Menampilkan bantuan untuk perintah menambah nama domain: python argparse_example.py add -h

Menampilkan bantuan untuk perintah menghapus nama domain: python argparse_example.py delete -h

Jalankan perintah untuk menambah nama domain: python argparse_example.py add -n testing.com -d someCategory

Jalankan perintah untuk menghapus nama domain: python argparse_example.py delete -n testing.com -s someCategory

Bacaan lebih lanjut

Konsep dasar:

Konsep subparsing:

Advertisements
Standard

One thought on “Memakai argparse untuk memberikan argumen pada skrip python

  1. Pingback: Using argparse to pass arguments into python script | Raja David's Journal

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s