Python CLI Arguments: Paggamit ng sys.argv at argparse

1. Pangunahing Paggamit ng Command Line Arguments sa Python

Ano ang command line arguments?

Kapag nagpapatakbo ng programang Python, ang karagdagang impormasyong ibinibigay kasama ng utos ng pagpapatakbo ay tinatawag na “command line arguments”. Sa pamamagitan nito, maaaring baguhin nang flexible ang pag-andar ng programa, o madaling magpasa ng data mula sa labas. Halimbawa, sa pamamagitan ng pagpapasa ng pangalan ng file o mga setting bilang mga argumento, maaaring dinamiko mong baguhin ang nilalaman ng programa.

Pagkuha ng command line arguments gamit ang sys.argv

Sa Python, maaaring kunin ang command line arguments gamit ang standard library na sys module. Ang sys.argv ay variable na nag-iimbak ng mga command line arguments bilang listahan. Ang unang elemento ng listahan (sys.argv[0]) ay ang pangalan ng script na pinapatakbo, at ang mga susunod na elemento ay ang mga halaga na ipinasa bilang mga argumento.

Halimbawang Kodigo: Simpleng Programa ng Kalkulasyon

import sys

def main():
    if len(sys.argv) < 3:
        print("Error: Kailangan ng dalawang argumento")
        return

    num1 = float(sys.argv[1])
    num2 = float(sys.argv[2])
    print(f"Kabuuan: {num1 + num2}")

if __name__ == "__main__":
    main()
Ang programang ito ay nagbubuod at nagpapakita ng dalawang numerong ipinasa mula sa command line. Ang halimbawa ng pagpapatakbo ay ganito:
$ python script.py 3 5
Kabuuan: 8.0

2. argparse module para sa advanced na pagproseso ng mga argumento

argparse pangunahing

sys.argv ay maaaring kunin ang mga pangunahing argumento, ngunit kapag dumarami ang bilang ng mga argumento o gumagamit ng mga opsyonal na argumento at flag (--verbose at iba pa), kapaki-pakinabang ang argparse module na bahagi ng standard library. Sa paggamit ng module na ito, madali mong mapoproseso ang mga argumento at awtomatikong makabubuo ng mga mensahe ng error.

Pag-parse ng mga argumento at paggawa ng parser

argparse upang magamit, una kang gagawa ng parser para i-parse ang mga argumento. Pagkatapos, i-set up ang mga argumento sa parser, at i-parse ang mga command-line argument.

Halimbawang code: Pangunahing argparse paggamit

import argparse

def main():
    parser = argparse.ArgumentParser(description='Ito ay isang halimbawa ng programa')
    parser.add_argument('arg1', help='unang argumento')
    parser.add_argument('arg2', type=float, help='ikalawang numerong argumento')
    args = parser.parse_args()

    print(f"arg1 = {args.arg1}")
    print(f"arg2 = {args.arg2}")

if __name__ == "__main__":
    main()
Sa programang ito, tumatanggap ito ng dalawang argumento. Ang arg1 ay itinuturing na string, at ang arg2 ay bilang, at pagkatapos ma-parse ay ilalabas.
$ python script.py test 5.5
arg1 = test
arg2 = 5.5

Pagproseso ng opsyonal na argumento at flag

Bilang isang malakas na tampok ng argparse, may mga opsyonal na argumento at flag. Sa ganitong paraan, maaari kang magsulat ng code na tumatakbo lamang kapag ang argumento ay ibinigay, at magbigay ng detalyadong output (tulad ng flag na --verbose).

Halimbawang code: Paggamit ng opsyonal na argumento at flag

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--verbose', action='store_true', help='magpakita ng detalyadong output')
    parser.add_argument('numbers', nargs='+', type=float, help='listahan ng mga numero')
    args = parser.parse_args()

    total = sum(args.numbers)
    if args.verbose:
        print(f"Detalye ng kalkulasyon: {args.numbers} ang kabuuan ay {total}")
    else:
        print(f"Kabuuan: {total}")

if __name__ == "__main__":
    main()
Sa programang ito, kapag tinukoy ang flag na --verbose, magpapakita ito ng detalyadong output; kung hindi, magpapakita ng simpleng resulta.
$ python script.py 1 2 3 --verbose
Detalye ng kalkulasyon: [1.0, 2.0, 3.0] ang kabuuan ay 6.0
年収訴求

3. Pagpapatakbo ng Error at Pagsusuri ng mga Argumento

Pagsusuri ng Bilang at Uri ng mga Argumento

Kapag humahawak ng mga command-line argument, mahalagang magpakita ng mensahe ng error kung hindi tama ang ibinigay ng user upang maiwasan ang maling pag-andar ng programa. Sa pamamagitan ng pagsusuri kung ang bilang at uri ng mga argument ay ayon sa inaasahan, mapapanatili ang katatagan ng programa.

Halimbawang Kodigo: Pagsusuri ng Bilang at Uri ng mga Argumento

import sys

def main():
    if len(sys.argv) != 3:
        print("Error: Kailangan ng 2 argumento")
        return

    try:
        num1 = float(sys.argv[1])
        num2 = float(sys.argv[2])
    except ValueError:
        print("Error: Ang mga argumento ay dapat na numero")
        return

    print(f"Kabuuan: {num1 + num2}")

if __name__ == "__main__":
    main()
Sa programang ito, magpapakita ng mensahe ng error kung ang bilang ng mga argumento ay hindi 3 (pangalan ng script + 2 numero), at magpapakita rin ng mensahe ng error kung ang ibinigay na argumento ay hindi numero.

4. Mga Aktwal na Use Case at Pag-aaplay

Halimbawa ng Paglikha ng Command-line Tool

Bilang isang praktikal na halimbawa gamit ang command-line arguments, maaaring lumikha ng command-line tool na gumagawa ng file operations at data processing.

Sample Code: Tool para bilangin ang nilalaman ng file

import argparse

def main():
    parser = argparse.ArgumentParser(description='Tool para bilangin ang mga linya ng file')
    parser.add_argument('filename', help='Pangalan ng file na bibilangin')
    args = parser.parse_args()

    try:
        with open(args.filename, 'r') as file:
            lines = file.readlines()
            print(f"Bilang ng linya ng file {args.filename}: {len(lines)}")
    except FileNotFoundError:
        print(f"Error: Hindi mahanap ang file {args.filename}")

if __name__ == "__main__":
    main()
Ang tool na ito ay binibilang at inilalabas ang bilang ng linya ng tinukoy na file.
$ python count_lines.py example.txt
Bilang ng linya ng file example.txt: 100

5. Buod

Sa pag-aaral kung paano hawakan ang mga command-line argument sa Python, maaari mong gawing mas flexible ang iyong programa. Mula sa simpleng paraan gamit ang sys.argv, hanggang sa komplikadong pagproseso ng mga argumento gamit ang argparse, mahalagang pumili ng tamang pamamaraan ayon sa aktwal na pangangailangan. Bukod dito, sa pamamagitan ng pagsasama ng error handling at pag-validate ng mga argumento, posible kang makagawa ng mas matibay na programa.
年収訴求