目次
1. Cách sử dụng cơ bản đối số dòng lệnh trong Python
Đối số dòng lệnh là gì?
Khi chạy chương trình Python, thông tin bổ sung được truyền kèm với lệnh thực thi được gọi là “đối số dòng lệnh”. Điều này cho phép thay đổi linh hoạt hoạt động của chương trình và dễ dàng truyền dữ liệu từ bên ngoài. Ví dụ, bằng cách truyền tên tệp hoặc giá trị cấu hình làm đối số, bạn có thể thay đổi nội dung chương trình một cách động.Lấy đối số dòng lệnh bằng sys.argv
Trong Python, bạn có thể lấy đối số dòng lệnh bằng cách sử dụng mô-đun sys
trong thư viện chuẩn. sys.argv
là một biến lưu trữ các đối số dòng lệnh dưới dạng danh sách. Phần tử đầu tiên của danh sách (sys.argv[0]
) là tên script được thực thi, còn các phần tử từ thứ hai trở đi là các giá trị được truyền làm đối số.Ví dụ: Chương trình tính toán đơn giản
import sys
def main():
if len(sys.argv) < 3:
print("エラー: 2つの引数が必要です")
return
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
print(f"合計: {num1 + num2}")
if __name__ == "__main__":
main()
Chương trình trên sẽ tính tổng của hai số được truyền từ dòng lệnh và hiển thị kết quả. Ví dụ chạy như sau:$ python script.py 3 5
合計: 8.0

2. Xử lý đối số nâng cao với mô-đun argparse
Cơ bản về argparse
Với sys.argv
, bạn có thể lấy các đối số cơ bản, nhưng khi số lượng đối số nhiều hoặc khi cần sử dụng đối số tùy chọn hay cờ (--verbose
chẳng hạn), thì mô-đun argparse
trong thư viện chuẩn rất hữu ích. Mô-đun này cho phép phân tích đối số và tự động sinh thông báo lỗi một cách dễ dàng.Phân tích đối số và tạo parser
Để sử dụngargparse
, trước tiên cần tạo một parser để phân tích đối số. Sau đó cấu hình các đối số cho parser và tiến hành phân tích các đối số dòng lệnh.Ví dụ: Cách sử dụng cơ bản của argparse
import argparse
def main():
parser = argparse.ArgumentParser(description='サンプルプログラムです')
parser.add_argument('arg1', help='最初の引数')
parser.add_argument('arg2', type=float, help='2番目の数値引数')
args = parser.parse_args()
print(f"arg1 = {args.arg1}")
print(f"arg2 = {args.arg2}")
if __name__ == "__main__":
main()
Chương trình này nhận 2 đối số: arg1
được xử lý như chuỗi, còn arg2
được xử lý như số, sau đó in ra sau khi phân tích.$ python script.py test 5.5
arg1 = test
arg2 = 5.5
Xử lý đối số tùy chọn và cờ
Một tính năng mạnh mẽ củaargparse
là hỗ trợ đối số tùy chọn và cờ. Điều này cho phép viết mã chỉ chạy khi đối số được chỉ định, hoặc cung cấp đầu ra chi tiết (như cờ --verbose
).Ví dụ: Sử dụng đối số tùy chọn và cờ
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true', help='詳細な出力を表示')
parser.add_argument('numbers', nargs='+', type=float, help='数値のリスト')
args = parser.parse_args()
total = sum(args.numbers)
if args.verbose:
print(f"計算詳細: {args.numbers} の合計は {total} です")
else:
print(f"合計: {total}")
if __name__ == "__main__":
main()
Trong chương trình này, khi cờ --verbose
được chỉ định thì kết quả chi tiết sẽ được hiển thị, còn nếu không thì chỉ hiện tổng đơn giản.$ python script.py 1 2 3 --verbose
計算詳細: [1.0, 2.0, 3.0] の合計は 6.0 です

3. Xử lý lỗi và kiểm tra đối số
Kiểm tra số lượng và kiểu của đối số
Khi làm việc với đối số dòng lệnh, nếu người dùng không cung cấp đúng cách, cần hiển thị thông báo lỗi để tránh chương trình hoạt động sai. Việc kiểm tra số lượng và kiểu dữ liệu của đối số giúp giữ cho chương trình ổn định.Ví dụ: Kiểm tra số lượng và kiểu đối số
import sys
def main():
if len(sys.argv) != 3:
print("エラー: 2つの引数が必要です")
return
try:
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
except ValueError:
print("エラー: 引数は数値でなければなりません")
return
print(f"合計: {num1 + num2}")
if __name__ == "__main__":
main()
Chương trình này yêu cầu đúng 3 đối số (tên script + 2 số). Nếu không thỏa mãn hoặc nếu đối số không phải số, sẽ hiển thị thông báo lỗi.4. Trường hợp sử dụng thực tế và ứng dụng
Ví dụ tạo công cụ dòng lệnh
Một ví dụ thực tế về việc sử dụng đối số dòng lệnh là tạo công cụ dòng lệnh để thao tác tệp hoặc xử lý dữ liệu.Ví dụ: Công cụ đếm số dòng trong tệp
import argparse
def main():
parser = argparse.ArgumentParser(description='ファイルの行数をカウントするツール')
parser.add_argument('filename', help='カウントするファイル名')
args = parser.parse_args()
try:
with open(args.filename, 'r') as file:
lines = file.readlines()
print(f"ファイル {args.filename} の行数: {len(lines)}")
except FileNotFoundError:
print(f"エラー: ファイル {args.filename} が見つかりません")
if __name__ == "__main__":
main()
Công cụ này sẽ đếm số dòng trong tệp được chỉ định và in ra kết quả.$ python count_lines.py example.txt
ファイル example.txt の行数: 100
5. Kết luận
Việc nắm vững cách xử lý đối số dòng lệnh trong Python giúp chương trình linh hoạt hơn. Từ cách đơn giản vớisys.argv
đến xử lý phức tạp với argparse
, bạn có thể chọn phương pháp phù hợp tùy theo nhu cầu. Đồng thời, việc bổ sung xử lý lỗi và kiểm tra đối số sẽ giúp tạo ra các chương trình ổn định và mạnh mẽ hơn.