Cách thêm đối số dòng lệnh vào tập lệnh Python

How Add Command Line Arguments Python Script



Nếu bạn đã phát triển một tập lệnh hoặc ứng dụng Python có nghĩa là chủ yếu chạy trong trình giả lập đầu cuối hoặc thậm chí là ứng dụng GUI, việc thêm các đối số dòng lệnh có thể cải thiện khả năng sử dụng, khả năng đọc mã, cấu trúc ứng dụng và tính thân thiện tổng thể của ứng dụng đối với người dùng cuối. Các đối số dòng lệnh này còn được gọi là tùy chọn hoặc công tắc và hoạt động tương tự như các đối số mà bạn thường thấy trong các tập lệnh bash và các chương trình dựa trên C / C ++ khác.

Để thêm các đối số vào các tập lệnh Python, bạn sẽ phải sử dụng một mô-đun dựng sẵn có tên là argparse. Như tên cho thấy, nó phân tích cú pháp các đối số dòng lệnh được sử dụng trong khi khởi chạy một tập lệnh hoặc ứng dụng Python. Các đối số được phân tích cú pháp này cũng được kiểm tra bởi mô-đun argparse để đảm bảo rằng chúng thuộc loại phù hợp. Lỗi được phát sinh nếu có giá trị không hợp lệ trong các đối số.







Cách sử dụng mô-đun argparse có thể được hiểu rõ nhất thông qua các ví dụ. Dưới đây là một số mẫu mã sẽ giúp bạn bắt đầu với mô-đun argparse.



Ví dụ 1: Tạo đối số và thông báo trợ giúp

Hãy xem xét mẫu mã dưới đây:



nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

args= phân tích cú pháp.parse_args()

Câu lệnh đầu tiên nhập mô-đun argparse. Tiếp theo, một thể hiện mới của đối tượng ArgumentParser được tạo và một mô tả ngắn cho chương trình được cung cấp dưới dạng đối số. Đối tượng ArgumentParser là cần thiết để chuyển đổi các giá trị đối số dòng lệnh thành các kiểu dữ liệu mà Python hiểu được. Điều này được thực hiện bởi phương thức parse_args của đối tượng ArgumentParser, như được hiển thị trong câu lệnh cuối cùng.





Giả sử rằng bạn đã lưu mẫu mã được nêu ở trên trong một tệp có tên test.py, chạy các lệnh bên dưới sẽ nhận được thông báo trợ giúp liên quan đến chương trình.

$ ./kiểm tra.py-NS

$ ./kiểm tra.py-Cứu giúp

Bạn sẽ nhận được một số đầu ra tương tự như sau:



use: test.py [-h]


Một chương trình thử nghiệm.


đối số tùy chọn:

-h, --help hiển thị thông báo trợ giúp này và thoát

Lưu ý rằng không có logic nào để xử lý các đối số được phân tích cú pháp và chuyển đổi chúng thành các đối tượng đã được thêm vào mẫu mã được đề cập ở trên. Do đó, thông báo trợ giúp cho các đối số riêng lẻ không được hiển thị trong đầu ra. Khi bạn thêm logic để xử lý các giá trị của các đối số được phân tích cú pháp trong chương trình của mình, thông báo trợ giúp sẽ bắt đầu hiển thị mô tả cho các đối số riêng lẻ.

Ví dụ 2: Xử lý một đối số chuỗi

Để thêm các đối số được chấp nhận bởi tập lệnh python của bạn, bạn cần sử dụng phương thức add_argument. Hãy xem đoạn mã sau:

nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

phân tích cú pháp.add_argument('print_string', Cứu giúp='In đối số được cung cấp.')

args= phân tích cú pháp.parse_args()

in(args.print_string)

Một câu lệnh mới đã được thêm vào cho thấy việc sử dụng phương thức add_argument. Bất kỳ đối số nào được thêm vào khi khởi chạy tập lệnh sẽ được ArgumentParser coi như một đối tượng print_string.

Lưu ý rằng theo mặc định, phương thức add_argument xử lý các giá trị được truy xuất từ ​​các đối số dưới dạng chuỗi, vì vậy bạn không phải chỉ định rõ ràng loại trong trường hợp này. Giá trị mặc định của Không có cũng được gán cho các đối số được thêm vào, trừ khi bị ghi đè.

Một lần nữa, hãy xem thông báo trợ giúp:

use: test.py [-h] [print_string]


Một chương trình thử nghiệm.


đối số vị trí:

print_string In đối số được cung cấp.


đối số tùy chọn:

-h, --help hiển thị thông báo trợ giúp này và thoát

Một trong các dòng trong đầu ra cho biết các đối số vị trí. Vì không có từ khóa nào cho đối số được xác định, nên hiện tại đối số được coi là đối số vị trí trong đó thứ tự và vị trí của đối số được cung cấp có ảnh hưởng trực tiếp đến chương trình. Đối số vị trí cũng là bắt buộc, trừ khi bạn thay đổi hành vi của chúng theo cách thủ công.

Để xác định và phân tích cú pháp các đối số tùy chọn, bạn có thể sử dụng - (dấu gạch ngang kép) và thay đổi các giá trị mặc định của chúng bằng cách sử dụng đối số mặc định.

nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

phân tích cú pháp.add_argument('--print_string', Cứu giúp='In đối số được cung cấp.',vỡ nợ=ĐẾNngẫu nhiên dây.)

args= phân tích cú pháp.parse_args()

in(args.print_string)

Bây giờ khi bạn chạy tập lệnh test.py mà không có bất kỳ đối số nào, bạn sẽ nhận được Một chuỗi ngẫu nhiên. dưới dạng đầu ra. Bạn cũng có thể tùy chọn sử dụng từ khóa –print_string để in bất kỳ chuỗi nào bạn chọn.

$ ./kiểm tra.py--print_string LinuxH Gợi ý.vớiLinuxHint.com

Lưu ý rằng bạn có thể đặt đối số tùy chọn bắt buộc bằng cách sử dụng đối số bắt buộc bổ sung = True.

Cuối cùng, bạn cũng có thể xác định phiên bản viết tắt của đối số bằng cách sử dụng - (dấu gạch ngang đơn) để giảm độ dài.

nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

phân tích cú pháp.add_argument(-P, '--print_string', Cứu giúp='In đối số được cung cấp.',vỡ nợ=ĐẾNngẫu nhiên dây.)

args= phân tích cú pháp.parse_args()

in(args.print_string)

Chạy lệnh sau sẽ cho bạn kết quả tương tự như trên:

$ ./kiểm tra.py-p LinuxH Gợi ý.với

Ví dụ 3: Xử lý một đối số nguyên

Để xử lý các đối số cần giá trị nguyên, bạn cần đặt từ khóa type thành int để cho phép xác thực và ném lỗi trong trường hợp điều kiện không được đáp ứng.

nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

phân tích cú pháp.add_argument('-P', '--print_string', Cứu giúp='In đối số được cung cấp.', kiểu=NS)

args= phân tích cú pháp.parse_args()

in(args.print_string)

Hãy thử chạy lệnh sau:

$ ./kiểm tra.py-p LinuxH Gợi ý.với

Bạn sẽ gặp lỗi như sau:

use: test.py [-h] [-p PRINT_STRING]

test.py: error: đối số -p / - print_string: giá trị int không hợp lệ: 'LinuxHint.com'

Cung cấp một giá trị số nguyên sẽ cho bạn kết quả chính xác:

$ ./kiểm tra.py-P10001000

Ví dụ 4: Xử lý Chuyển đổi Đúng và Sai

Bạn có thể chuyển các đối số không có bất kỳ giá trị nào để coi chúng là cờ True và False bằng cách sử dụng đối số hành động.

nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

phân tích cú pháp.add_argument('-P', '--print_string', Cứu giúp='In đối số được cung cấp.',hoạt động='store_true')

args= phân tích cú pháp.parse_args()

in(args.print_string)

Chạy lệnh dưới đây để nhận True đơn giản làm đầu ra:

$ ./kiểm tra.py-P

Nếu bạn chạy tập lệnh mà không có đối số -p, giá trị Sai sẽ được chỉ định thay thế. Giá trị store_true của từ khóa action gán giá trị True cho biến print_string bất cứ khi nào đối số -p được chỉ định rõ ràng, nếu không thì False được gán cho biến.

Ví dụ 5: Coi Giá trị đối số là Danh sách

Nếu bạn muốn nhận nhiều giá trị cùng một lúc và lưu trữ chúng trong danh sách, bạn cần cung cấp từ khóa tường thuật ở định dạng sau:

nhập khẩuargparse

phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Một chương trình thử nghiệm.')

phân tích cú pháp.add_argument('-P', '--print_string', Cứu giúp='In đối số được cung cấp.',tường thuật='*')

args= phân tích cú pháp.parse_args()

in(args.print_string)

Chạy lệnh sau để kiểm tra đoạn mã trên:

$ ./kiểm tra.py-p a b

Bạn sẽ nhận được một số đầu ra như thế này:

['a', 'b']

Phần kết luận

Mô-đun argparse khá toàn diện với rất nhiều tùy chọn để điều chỉnh hành vi của các ứng dụng dòng lệnh và phân tích cú pháp các giá trị do người dùng cung cấp. Những ví dụ này chỉ liên quan đến cách sử dụng cơ bản của mô-đun argparse. Đối với các ứng dụng nâng cao và phức tạp, bạn có thể cần các cách triển khai khác nhau. Tham quan tài liệu chính thức để được giải thích đầy đủ về mô-đun.