Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Command Line Arguments ใน Python: sys.argv, getopt, argparse

Command Line Arguments (CLA) ให้ผู้ใช้ควบคุมพฤติกรรมโปรแกรมจากเทอร์มินัล Python มี 3 วิธีหลัก

1. sys.argv (พื้นฐานที่สุด)

import sys

print(type(sys.argv))  # 
print('Arguments:')
for arg in sys.argv:
    print(arg)

# รัน: python script.py H E L L O
# script.py
# H
# E
# L
# L
# O

sys.argv[0] = ชื่อสคริปท, sys.argv[1:] = อาร์กิวเมนต์จริง

2. getopt Module (Unix-style)

import getopt, sys

# Short options: -a, -b value, -c:value
opts, args = getopt.getopt(sys.argv[1:], 'ab:c:')

# Long options: --noarg, --witharg=value
opts, args = getopt.getopt(sys.argv[1:], '', ['noarg', 'witharg='])

# ตัวอย่างเต็ม
argv = sys.argv[1:]
try:
    opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file='])
    print(opts)   # [('-m', '2'), ('-h', '')]
    print(args)   # ['Help', 'H', 'E', 'L', 'L', 'O']
except getopt.GetoptError:
    print('Something Wrong!')
    sys.exit(2)

3. argparse Module (แนะนำ: ทรงพลังที่สุด)

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("string", help="Print the word in upper case")
parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output")

args = parser.parse_args()
print(args.string.upper())

# รัน: python script.py "Hello, pythoN"
# HELLO, PYTHON

argparse Features เด่น

  • Positional & Optional arguments
  • Type checking (type=int, type=float)
  • Default values
  • Choices validation
  • Auto-generated help (-h/--help)
  • Sub-commands (git-style)
parser = argparse.ArgumentParser()
parser.add_argument("input", type=str, help="Input file")
parser.add_argument("-o", "--output", type=str, default="out.txt", help="Output file")
parser.add_argument("-n", "--count", type=int, choices=[1,2,3], default=1)
parser.add_argument("--verbose", action="store_true")

args = parser.parse_args()
print(args.input, args.output, args.count, args.verbose)

เลือกใช้ตัวไหน?

Moduleเหมาะกับ
sys.argvสคริปทเล็ก, ไม่มี option ซับซ้อน
getoptRelocatable C-style, legacy code
argparseโปรเจกต์จริง, CLI tools, ต้องการ help/validation