Python - Argumen Baris Perintah
Halo, pemrogram berprestasi! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia argumen baris perintah di Python. Jangan khawatir jika kamu masih baru di dunia pemrograman; saya akan membimbingmu melalui setiap langkah dengan penuh kesabaran dan perhatian seperti seorang guru berpengalaman. Mari kita mulai!
Apa itu Argumen Baris Perintah?
Bayangkan jika kamu adalah seorang juru masak, dan bukannya selalu memasak makanan yang sama, kamu ingin dapat mengubah bahan-bahan berdasarkan permintaan pelanggan. Di pemrograman, argumen baris perintah seperti permintaan khusus dari pelanggan. Argumen ini memungkinkan kita untuk memberikan input berbeda ke program Python kita ketika menjalankannya, membuat kode kita lebih fleksibel dan kuat.
Argumen Baris Perintah di Python
Di Python, kita dapat dengan mudah mengakses argumen baris perintah menggunakan modul sys
. Mari kita mulai dengan contoh sederhana:
import sys
print("Halo, saya program Python pertama kamu!")
print("Jumlah argumen:", len(sys.argv))
print("Argumen:", str(sys.argv))
Simpan sebagai hello_args.py
dan jalankan dari baris perintah seperti ini:
python hello_args.py arg1 arg2 arg3
Kamu akan melihat keluaran seperti ini:
Halo, saya program Python pertama kamu!
Jumlah argumen: 4
Argumen: ['hello_args.py', 'arg1', 'arg2', 'arg3']
Ayo kita pecahkan ini:
-
sys.argv
adalah daftar yang berisi argumen baris perintah. - Item pertama (
sys.argv[0]
) adalah nama skrip itu sendiri. - Item yang tersisa adalah argumen yang kita kirim.
Mengakses Argumen Tertentu
Sekarang, mari kita buat program yang menggunakan argumen ini:
import sys
if len(sys.argv) < 2:
print("Silakan berikan nama kamu sebagai argumen!")
else:
name = sys.argv[1]
print(f"Halo, {name}! Selamat datang di dunia argumen baris perintah!")
Simpan sebagai greet.py
dan jalankan:
python greet.py Alice
Output:
Halo, Alice! Selamat datang di dunia argumen baris perintah!
Jika kamu menjalankannya tanpa argumen:
python greet.py
Output:
Silakan berikan nama kamu sebagai argumen!
Contoh ini menunjukkan bagaimana kita dapat membuat program kita interaktif dan ramah pengguna!
Mengirim Argumen Pada Waktu Eksekusi
Mari kita buat contoh yang lebih praktis. Kita akan membuat kalkulator sederhana:
import sys
def calculator(operation, num1, num2):
if operation == 'tambah':
return num1 + num2
elif operation == 'kurang':
return num1 - num2
elif operation == 'kali':
return num1 * num2
elif operation == 'bagi':
return num1 / num2 if num2 != 0 else "Error: Pembagian oleh nol"
else:
return "Operasi tidak valid"
if len(sys.argv) != 4:
print("Penggunaan: python calculator.py <operation> <num1> <num2>")
else:
operation = sys.argv[1]
try:
num1 = float(sys.argv[2])
num2 = float(sys.argv[3])
result = calculator(operation, num1, num2)
print(f"Hasil: {result}")
except ValueError:
print("Error: Silakan berikan nomor yang valid")
Simpan sebagai calculator.py
dan gunakan seperti ini:
python calculator.py tambah 5 3
Output:
Hasil: 8.0
Contoh kalkulator ini menunjukkan bagaimana kita dapat membuat alat yang kuat yang mengambil input berbeda dan melakukan operasi berbagai macam.
Modul getopt Python
Untuk antarmuka baris perintah yang lebih kompleks, Python menyediakan modul getopt
. Ini seperti memiliki asisten yang terampil untuk membantu mengurutkan semua pilihan dan argumen yang mungkin diberikan pengguna kamu.
Berikut adalah contoh:
import sys
import getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print('test.py -i <inputfile> -o <outputfile>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print('File input adalah:', inputfile)
print('File output adalah:', outputfile)
if __name__ == "__main__":
main(sys.argv[1:])
Simpan sebagai file_processor.py
dan jalankan:
python file_processor.py -i input.txt -o output.txt
Output:
File input adalah: input.txt
File output adalah: output.txt
Modul getopt
membantu kita menangani pilihan pendek (-i, -o) dan pilihan panjang (--ifile, --ofile), membuat program kita lebih ramah pengguna.
Modul argparse Python
Untuk antarmuka baris perintah yang lebih sophisticated, Python menawarkan modul argparse
. Ini seperti memiliki restoran penuh layanan untuk kebutuhan baris perintah kamu!
Berikut adalah contoh:
import argparse
parser = argparse.ArgumentParser(description='Proses beberapa integer.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='sebuah integer untuk akumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='jumlahkan integer (default: cari maks)')
args = parser.parse_args()
print(args.accumulate(args.integers))
Simpan sebagai integer_processor.py
dan gunakan seperti ini:
python integer_processor.py 1 2 3 4
Output:
4
Atau dengan pilihan --sum:
python integer_processor.py 1 2 3 4 --sum
Output:
10
Modul argparse
secara otomatis menghasilkan pesan bantuan, menangani kesalahan, dan memungkinkan struktur argumen yang kompleks.
Perbandingan Metode
Berikut adalah perbandingan singkat dari metode yang telah kita diskusikan:
Metode | Kompleksitas | kasus Penggunaan |
---|---|---|
sys.argv | Simple | Pemilihan argumen dasar |
getopt | Sedang | Pilihan pendek dan panjang |
argparse | Tinggi | Antarmuka CLI kompleks dengan bantuan otomatis |
Ingat, metode terbaik tergantung pada kebutuhan kamu yang spesifik. Mulai dengan sederhana menggunakan sys.argv
, dan saat program kamu menjadi lebih kompleks, pertimbangkan untuk berpindah ke getopt
atau argparse
.
Dalam kesimpulan, argumen baris perintah adalah alat yang kuat di atas rak peralat kamu di Python. Argumen ini memungkinkan kamu untuk membuat program yang fleksibel dan interaktif yang dapat menyesuaikan dengan input dan kebutuhan pengguna yang berbeda. Sebagai kamu melanjutkan perjalanan Python kamu, kamu akan menemukan banyak cara untuk menggunakan teknik ini untuk membangun software yang menakjubkan. Selamat coding, dan semoga perjalanan baris perintah kamu selalu menarik!
Credits: Image by storyset