Cách phân tích cú pháp các đối số trên dòng lệnh trong Python

How Parse Arguments Command Line Python



Các đối số dòng lệnh được sử dụng để truyền dữ liệu trong chương trình tại thời điểm thực hiện chương trình. Tính năng này có sẵn trên hầu hết các ngôn ngữ lập trình phổ biến. Nhưng việc xử lý các đối số dòng lệnh là khác nhau đối với các ngôn ngữ khác nhau. Các giá trị đối số được đưa ra cùng với tên chương trình tại thời điểm chạy chương trình. Ngôn ngữ Python hỗ trợ tính năng này. Cách các đối số dòng lệnh được phân tích cú pháp trong tập lệnh Python được hiển thị trong bài viết này.

Phân tích cú pháp đối số dòng lệnh bằng cách sử dụng sys mô-đun

Các đối số dòng lệnh được lưu trữ trong một danh sách bằng cách sử dụng sys mô-đun. sys.argv được sử dụng để đọc các giá trị của các đối số dòng lệnh. Tổng số đối số dòng lệnh có thể được đếm bằng cách sử dụng len () hàm số. Việc sử dụng mô-đun này được mô tả trong một phần của bài báo.







Ví dụ 1: Đọc số đối số và giá trị đối số

Tạo tệp bằng tập lệnh python sau. Tại đây, các giá trị đối số dòng lệnh được lưu trữ trong biến, argv như các ngôn ngữ khác. len () phương thức đếm tổng số đối số được truyền tại thời điểm thực thi tập lệnh. Giá trị đối số được in dưới dạng một mảng ở cuối tập lệnh.



# Nhập mô-đun hệ thống
nhập khẩu sys

# In tổng số đối số
in('Tổng số đối số:', len(sys.argv))
in('Các giá trị đối số là:', P(sys.argv))

Đầu ra:



Tập lệnh trên được thực thi ở đây bằng cách sử dụng bốn đối số dòng lệnh. Đối số đầu tiên là tên tập lệnh và các đối số khác là giá trị số. Kết quả sau sẽ xuất hiện sau khi chạy tập lệnh.





Ví dụ 2: Đọc giá trị đối số bằng vòng lặp



Trong ví dụ trước, các giá trị đối số được in dưới dạng một mảng. Tạo tệp với tập lệnh sau để in kiểu của biến đối số và in từng giá trị đối số trong mỗi dòng bằng cách sử dụng vòng lặp for.

# Nhập mô-đun hệ thống
nhập khẩu sys

# In loại biến, sys.argv
in(kiểu(sys.argv))

# In từng đối số dòng lệnh trong mỗi dòng
in('Các đối số dòng lệnh là:')
tôitrong sys.argv:
in(tôi)

Đầu ra:

Tập lệnh trên được thực thi bằng cách cung cấp ba đối số với tên tập lệnh. Kết quả sau sẽ xuất hiện sau khi chạy tập lệnh.

Phân tích cú pháp đối số dòng lệnh bằng mô-đun getopt

Topped mô-đun được sử dụng để phân tích cú pháp các đối số dòng lệnh với các tùy chọn. đứng đầu () phương thức của mô-đun này được sử dụng để đọc các đối số. Phương pháp này có ba đối số. Hai đối số đầu tiên là bắt buộc và đối số cuối cùng là tùy chọn. Việc sử dụng các đối số này được đưa ra dưới đây.

args: Nó chứa đối số được lấy từ đối số dòng lệnh.

short_option: Nó có thể là bất kỳ chữ cái nào đi cùng với đối số.

long_option: Nó được sử dụng để xác định các tùy chọn dài với hai phần. Đây là tên tùy chọn và giá trị tùy chọn.

Cú pháp: getopt.getopt (args, short_option, [long_option])

Ví dụ 3: Đọc các giá trị đối số bằng cách sử dụng các tùy chọn getopt ngắn

đứng đầu mô-đun chứa nhiều tính năng hơn sys mô-đun. Ví dụ sau đây cho thấy cách các tùy chọn ngắn có thể được sử dụng trong đứng đầu () phương pháp. argv biến sẽ lưu trữ các đối số dòng lệnh bằng cách bỏ qua tên tập lệnh. Tiếp theo, hai tùy chọn được xác định trong đứng đầu () phương thức có thể được sử dụng với đối số tại thời điểm chạy. Nếu có bất kỳ lỗi nào xảy ra thì một thông báo lỗi sẽ hiển thị.

# Nhập mô-đun getopt
nhập khẩu đứng đầu

# Nhập mô-đun hệ thống
nhập khẩu sys

# Biến đối số lưu trữ bỏ qua tên tập lệnh
argv= sys.argv[1:]

cố gắng:
# Xác định các tùy chọn ngắn getopt
tùy chọn,args= đứng đầu.đứng đầu(argv, 'x: y:')

# in các tùy chọn và đối số
in(tùy chọn)
in(args)

ngoại trừ đứng đầu.GetoptError:

# In thông báo lỗi nếu tùy chọn sai được cung cấp
in('Tùy chọn sai được cung cấp')

# Chấm dứt tập lệnh
sys.lối ra(2)

Đầu ra:

Chạy tập lệnh mà không có bất kỳ đối số nào, đối số với tùy chọn đúng và đối số với tùy chọn sai.

Ví dụ 4: Đọc các giá trị đối số bằng cách sử dụng các tùy chọn getopt ngắn và dài

Ví dụ này cho thấy cách cả hai tùy chọn ngắn và dài có thể được sử dụng với các giá trị đối số. Nó sẽ thêm hai số khi '-đến' hoặc '-cộng' sẽ được sử dụng như một tùy chọn và trừ hai số khi ‘ -NS' hoặc ' –Sub ’ sẽ được sử dụng như một tùy chọn tại thời điểm chạy.

# Nhập mô-đun getopt
nhập khẩu đứng đầu

# Nhập mô-đun hệ thống
nhập khẩu sys

# Biến đối số lưu trữ bỏ qua tên tập lệnh
argv= sys.argv[1:]

# Khởi tạo biến kết quả
kết quả=0

cố gắng:

# Xác định các tùy chọn ngắn và dài của getopt
tùy chọn,args= đứng đầu.đứng đầu(sys.argv[1:], 'như', ['thêm =','sub ='])

# Đọc từng tùy chọn bằng vòng lặp for
opt,tức giậntrongtùy chọn:
# Tính tổng nếu tùy chọn là -a hoặc --add
nếu nhưopttrong ('-đến', '--cộng'):
kết quả= NS(argv[1])+NS(argv[2])

# Tính tổng nếu tùy chọn là -s hoặc --sub
elifopttrong ('-NS', '--sub'):
kết quả= NS(argv[1])-NS(argv[2])

in('Kết quả =',kết quả)

ngoại trừ đứng đầu.GetoptError:

# In thông báo lỗi nếu tùy chọn sai được cung cấp
in('Tùy chọn sai được cung cấp')

# Chấm dứt tập lệnh
sys.lối ra(2)

Đầu ra:

Chạy tập lệnh mà không có bất kỳ đối số và tùy chọn nào, đối số có tùy chọn ‘-a’, đối số có tùy chọn ‘-s’ và đối số có tùy chọn sai.

Phân tích cú pháp đối số dòng lệnh bằng mô-đun argparse

Mô-đun Argparse chứa rất nhiều tùy chọn để đọc các đối số dòng lệnh. Các giá trị đối số mặc định, đối số có kiểu dữ liệu, đối số vị trí, thông báo trợ giúp, v.v. có thể được cung cấp bởi mô-đun này.

Ví dụ 5: Đọc các đối số dòng lệnh bằng cách sử dụng argparse

Ví dụ sau đây cho thấy việc sử dụng argparse mô-đun để đọc đối số dòng lệnh. Ở đây, hai tùy chọn được xác định để đọc các đối số dòng lệnh. đó là ‘-N’ hoặc ‘–name’‘-E’ hoặc ‘–email’. Nếu người dùng cung cấp bất kỳ đối số sai nào thì nó sẽ hiển thị lỗi với thông báo sử dụng. Nếu người dùng cung cấp các tùy chọn chính xác với các đối số thì nó sẽ hiển thị các giá trị đối số. nếu người dùng chạy tập lệnh với tùy chọn ‘–help’ thì nó sẽ cung cấp thông báo cần thiết để chạy tập lệnh.

# Nhập mô-đun argparse
nhập khẩuargparse

# Nhập mô-đun hệ thống
nhập khẩu sys

# Khai báo hàm để xác định các đối số dòng lệnh
phản đốireadOptions(args=sys.argv[1:]):
phân tích cú pháp =tranh cãi.ArgumentParser(sự mô tả='Danh sách các lệnh phân tích cú pháp.')
phân tích cú pháp.add_argument('-n', '--Tên', Cứu giúp='Gõ tên của bạn.')
phân tích cú pháp.add_argument('-Và', '--e-mail', Cứu giúp='Nhập email của bạn.')
lựa chọn= phân tích cú pháp.parse_args(args)
trở lạilựa chọn

# Gọi hàm để đọc các giá trị đối số
tùy chọn=readOptions(sys.argv[1:])
in(tùy chọn.Tên)
in(tùy chọn.e-mail)

Đầu ra:

Chạy tập lệnh với tùy chọn sai, tùy chọn đúng và tùy chọn trợ giúp.

Phần kết luận:

Các cách khác nhau để đọc các đối số dòng lệnh được giải thích trong hướng dẫn này bằng cách sử dụng ba mô-đun python. Tôi hy vọng, hướng dẫn này sẽ giúp ích cho các lập trình viên muốn đọc dữ liệu bằng cách sử dụng các đối số dòng lệnh trong python.

Xem Video của Tác giả: ở đây