Làm thế nào để bạn phân tích các đối số đầu vào trong python?

Nếu bạn đang sử dụng Python cho bất kỳ mức độ phát triển nào, có thể bạn đã đưa ra một lệnh trong thiết bị đầu cuối, ngay cả khi chỉ để khởi chạy tập lệnh Python hoặc cài đặt mô-đun Python bằng pip. Các lệnh có thể đơn giản và số ít

$ ls

Các lệnh cũng có thể có một đối số

$ ls example

Các lệnh cũng có thể có các tùy chọn hoặc cờ

$ ls --color example

Đôi khi các tùy chọn cũng có đối số

$ sudo firewall-cmd  --list-all --zone home

Tranh luận

Shell POSIX tự động phân tách bất kỳ thứ gì bạn nhập dưới dạng lệnh thành một mảng. Ví dụ, đây là một lệnh đơn giản

$ ls example

Lệnh ls ở vị trí $0, và ví dụ đối số ở vị trí $1

Bạn có thể viết một vòng lặp để lặp lại từng mục; . May mắn thay, một mô-đun gọi là argparse đã tồn tại cho điều đó

Argparse

Nội dung liên quan

Mô-đun argparse dễ dàng tích hợp vào các chương trình Python của bạn và có một số tính năng tiện lợi. Ví dụ: nếu người dùng của bạn thay đổi thứ tự của các tùy chọn hoặc sử dụng một tùy chọn không có đối số [được gọi là Boolean, nghĩa là tùy chọn bật hoặc tắt một cài đặt] và sau đó là một tùy chọn khác yêu cầu đối số [chẳng hạn như --color red, cho . Nếu người dùng của bạn quên một tùy chọn bắt buộc, mô-đun argparse có thể cung cấp thông báo lỗi thân thiện

Việc sử dụng argparse trong ứng dụng của bạn bắt đầu bằng việc xác định những tùy chọn bạn muốn cung cấp cho người dùng của mình. Có một số loại đối số khác nhau mà bạn có thể chấp nhận, nhưng cú pháp nhất quán và đơn giản

Đây là một ví dụ đơn giản

#!/usr/bin/env python
import argparse
import sys

def getOptions[args=sys.argv[1:]]:
    parser = argparse.ArgumentParser[description="Parses command."]
    parser.add_argument["-i", "--input", help="Your input file."]
    parser.add_argument["-o", "--output", help="Your destination output file."]
    parser.add_argument["-n", "--number", type=int, help="A number."]
    parser.add_argument["-v", "--verbose",dest='verbose',action='store_true', help="Verbose mode."]
    options = parser.parse_args[args]
    return options

Mẫu mã này tạo một hàm gọi là getOptions và yêu cầu Python xem xét từng đối số tiềm năng đứng trước một số chuỗi có thể nhận dạng được [chẳng hạn như --input hoặc -i]. Bất kỳ tùy chọn nào mà Python tìm thấy đều được trả về từ hàm dưới dạng đối tượng tùy chọn [tùy chọn là tên tùy ý và không có ý nghĩa đặc biệt; nó chỉ là đối tượng dữ liệu chứa bản tóm tắt tất cả các đối số mà hàm đã phân tích cú pháp]

Theo mặc định, bất kỳ đối số nào do người dùng đưa ra đều được Python xem dưới dạng một chuỗi. Nếu bạn cần nhập một số nguyên [một số], bạn phải chỉ định rằng một tùy chọn mong đợi type=int, như trong tùy chọn --number trong mã mẫu

Nếu bạn có một đối số chỉ bật hoặc tắt một tính năng, thì bạn phải sử dụng kiểu boolean, như với cờ --verbose trong mã mẫu. Kiểu tùy chọn này chỉ lưu trữ Đúng hoặc Sai, chỉ định người dùng có sử dụng cờ hay không. Nếu tùy chọn được sử dụng, thì stored_true được kích hoạt

Khi chức năng getOptions chạy, bạn có thể sử dụng nội dung của đối tượng tùy chọn và yêu cầu chương trình của bạn đưa ra quyết định dựa trên cách người dùng gọi lệnh. Bạn có thể xem nội dung của các tùy chọn với câu lệnh in thử. Thêm phần này vào cuối tệp ví dụ của bạn

print[getOptions[]]

Sau đó chạy mã với một số đối số

$ python3 ./example.py -i foo -n 4
Namespace[input='foo', number=4, output=None, verbose=False]

Truy xuất giá trị

Đối tượng tùy chọn trong mã mẫu chứa bất kỳ giá trị nào do người dùng cung cấp [hoặc giá trị Boolean dẫn xuất] trong các khóa được đặt tên theo tùy chọn dài. Ví dụ, trong mã mẫu, tùy chọn --number có thể được truy xuất bằng cách xem các tùy chọn. con số

________số 8

Tùy chọn Boolean, --verbose trong ví dụ, được xác định bằng cách kiểm tra xem các tùy chọn. dài dòng là Đúng [nghĩa là người dùng đã sử dụng cờ --verbose] hoặc Sai [người dùng không sử dụng cờ --verbose] và thực hiện một số hành động tương ứng

Giúp đỡ và phản hồi

Argparse cũng bao gồm tùy chọn --help [viết tắt là -h] tích hợp cung cấp mẹo hữu ích về cách sử dụng lệnh. Điều này bắt nguồn từ mã của bạn, vì vậy không cần phải làm gì thêm để tạo hệ thống trợ giúp này

$ ./example.py --help
usage: example.py [-h] [-i INPUT] [-o OUTPUT] [-n NUMBER] [-v]

Parses command.

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        Your input file.
  -o OUTPUT, --output OUTPUT
                        Your destination output file.
  -n NUMBER, --number NUMBER
                        A number.
  -v, --verbose         Verbose mode.

Phân tích cú pháp Python như một chuyên gia

Đây là một ví dụ đơn giản minh họa cách xử lý các đối số phân tích cú pháp trong ứng dụng Python và cách ghi lại cú pháp của chúng một cách nhanh chóng và hiệu quả. Lần tới khi bạn viết một tập lệnh Python nhanh, hãy cung cấp cho nó một số tùy chọn với argparse. Bạn sẽ cảm ơn chính mình sau này và lệnh của bạn sẽ không giống như một cú hack nhanh và giống một lệnh Unix "thực" hơn

Đây là mã mẫu mà bạn có thể sử dụng để thử nghiệm

$ ls example
0

 

Đọc gì tiếp theo

thẻ

con trăn

Seth Kenlon

Seth Kenlon là một người đam mê UNIX, người ủng hộ văn hóa tự do, nghệ sĩ đa phương tiện độc lập và mọt sách D&D. Anh ấy đã làm việc trong ngành công nghiệp điện ảnh và máy tính, thường là cùng một lúc

Thêm về tôi

4 Bình luận

Những bình luận này đã bị đóng, tuy nhiên bạn có thể Đăng ký hoặc Đăng nhập để đăng bình luận về một bài viết khác

không xệ. 3 Tháng Bảy, 2019

Đăng ký hoặc Đăng nhập để thích

Thư viện nhấp chuột tuyệt vời là một mẹo hay để phát triển dòng lệnh python. https. //nhấp chuột. dự án pallet. com/vi/7. x/

Làm cách nào để phân tích cú pháp trong Python?

Phân tích cú pháp văn bản ở định dạng phức tạp bằng biểu thức chính quy .
Bước 1. Hiểu định dạng đầu vào. 123. .
Bước 2. Nhập các gói cần thiết. Chúng ta sẽ cần mô-đun Biểu thức chính quy và gói gấu trúc. .
Bước 3. Định nghĩa biểu thức chính quy. .
Bước 4. Viết trình phân tích cú pháp dòng. .
Bước 5. Viết trình phân tích tệp. .
Bước 6. Kiểm tra trình phân tích cú pháp

Phân tích đối số là gì?

argparse — phân tích đối số. Sử dụng argparse là cách bạn cho phép người dùng chương trình cung cấp giá trị cho các biến trong thời gian chạy . Là phương tiện giao tiếp giữa người viết chương trình và người dùng.

Chủ Đề