Chuyển đến nội dung chính
Show
Python trung cấpNâng cao kỹ năng khoa học dữ liệu của bạn bằng cách tạo trực quan hóa bằng Matplotlib và thao tác với DataFrames bằng gấu trúcMô-đun sys của Python cung cấp quyền truy cập vào bất kỳ đối số dòng lệnh nào thông qua sys. argv. Điều này phục vụ hai mục đích -
đây sys. argv[0] là chương trình tức là. tên kịch bản Thí dụHãy xem xét thử nghiệm tập lệnh sau. py - #!/usr/bin/python import sys print 'Number of arguments:', len(sys.argv), 'arguments.' print 'Argument List:', str(sys.argv) Bây giờ hãy chạy tập lệnh trên như sau - $ python test.py arg1 arg2 arg3 Điều này tạo ra kết quả sau - Number of arguments: 4 arguments. Argument List: ['test.py', 'arg1', 'arg2', 'arg3'] LƯU Ý - Như đã đề cập ở trên, đối số đầu tiên luôn là tên tập lệnh và nó cũng được tính vào số lượng đối số Phân tích đối số dòng lệnhPython đã cung cấp một mô-đun getopt giúp bạn phân tích các đối số và tùy chọn dòng lệnh. Mô-đun này cung cấp hai chức năng và một ngoại lệ để cho phép phân tích cú pháp đối số dòng lệnh getopt. phương pháp getoptPhương pháp này phân tích các tùy chọn dòng lệnh và danh sách tham số. Sau đây là cú pháp đơn giản cho phương thức này - getopt.getopt(args, options, [long_options]) Đây là chi tiết của các tham số -
getopt ngoại lệ. GetoptErrorĐiều này xảy ra khi một tùy chọn không được công nhận được tìm thấy trong danh sách đối số hoặc khi một tùy chọn yêu cầu đối số không được đưa ra Đối số cho ngoại lệ là một chuỗi cho biết nguyên nhân gây ra lỗi. Các thuộc tính msg và opt đưa ra thông báo lỗi và tùy chọn liên quan Thí dụHãy xem xét chúng tôi muốn chuyển hai tên tệp qua dòng lệnh và chúng tôi cũng muốn cung cấp tùy chọn để kiểm tra việc sử dụng tập lệnh. Cách sử dụng tập lệnh như sau - Chúng tôi có một chương trình ở đây có tên là 1 sử dụng mô-đun 2 của Python để phân tích hai đối số, 3 và 4________số 8 Khi được gọi, nó chuyển đổi các đối số thành số dấu chấm động và sau đó cộng chúng lại Bây giờ, chúng tôi có rất nhiều mã ở đây chỉ để phân tích hai đối số dòng lệnh. Tại sao chúng tôi sử dụng 2 cho việc này?Tại sao không sử dụng $ python3 add_old.py 3 4 7.0 6 để nhận đối số dòng lệnh?Thay vì tất cả mã đó, chúng ta chỉ cần đọc 6 (là danh sách tất cả các đối số dòng lệnh dưới dạng chuỗi) và sau đó chuyển đổi hai đối số dự kiến của chúng ta thành số dấu phẩy động$ python test.py arg1 arg2 arg32 Như bạn có thể thấy, điều này không làm việc
Nhưng nhược điểm của việc làm theo cách này là, nếu chúng ta mắc lỗi khi gọi chương trình dòng lệnh này, chúng ta sẽ không thấy các thông báo lỗi rất hữu ích Ví dụ: nếu chúng ta chuyển quá ít đối số thì Python không thực sự cho chúng ta biết nhiều về những gì đang diễn ra $ python test.py arg1 arg2 arg34 Tương tự, nếu chúng tôi chuyển vào thứ gì đó không phải là số, chúng tôi chỉ nhận được một thông báo lỗi hơi hữu ích $ python test.py arg1 arg2 arg35 Và nếu chúng tôi yêu cầu trợ giúp, chúng tôi sẽ không nhận được thông tin hữu ích nào cả $ python test.py arg1 arg2 arg36 Trong tất cả các trường hợp này, chúng tôi thấy một dấu vết không hữu ích được in ra thay vì một thông báo lỗi hữu ích. Trong tất cả các trường hợp này, thay vào đó, mô-đun 2 của Python sẽ in ra thông báo lỗi hữu ích trong tất cả các trường hợp nàySo sánh $ python3 add_old.py 3 4 7.0 2 với cách đọc thủ công $ python3 add_old.py 3 4 7.0 6Đây là chương trình dòng lệnh của chúng tôi trước đó sử dụng 2________số 8 Khi chúng tôi yêu cầu chương trình này trợ giúp (bằng cách chuyển đối số $ python test.py arg1 arg2 arg342), nó sẽ hiển thị cho chúng tôi thông tin sử dụng Number of arguments: 4 arguments. Argument List: ['test.py', 'arg1', 'arg2', 'arg3']3 Nếu chúng tôi phân tích quá ít đối số, nó sẽ cho chúng tôi biết rằng có một đối số khác được yêu cầu Number of arguments: 4 arguments. Argument List: ['test.py', 'arg1', 'arg2', 'arg3']4 Tương tự, nếu chúng ta nhập sai giá trị cho một đối số (không phải là số), điều đó cho chúng ta biết rằng đối số của chúng ta không thể được chuyển đổi thành số dấu phẩy động Number of arguments: 4 arguments. Argument List: ['test.py', 'arg1', 'arg2', 'arg3']5 Mô-đun 2 thực sự tiện dụng để tạo giao diện dòng lệnh thân thiệnNhưng 2 không chỉ dành cho các giao diện dòng lệnh đơn giản như giao diện này, chúng ta cũng có thể chấp nhận các đối số tùy chọn bằng cách sử dụng 2Chấp nhận đối số dòng lệnh tùy chọnPhiên bản này của chương trình 1 của chúng tôi chấp nhận một đối số $ python test.py arg1 arg2 arg347 hoặc $ python test.py arg1 arg2 arg348 tùy chọn $ python test.py arg1 arg2 arg320 Dòng mã này thêm một tùy chọn, đó là đối số tùy chọn, vào trình phân tích cú pháp dòng lệnh của chúng tôi $ python test.py arg1 arg2 arg321 Khi chạy chương trình này, đối số tùy chọn này có thể được chỉ định bằng $ python test.py arg1 arg2 arg349 hoặc $ python test.py arg1 arg2 arg350 Nếu đối số dự kiến này không được cung cấp thì nó sẽ mặc định là giá trị $ python test.py arg1 arg2 arg351 Khi đối số $ python test.py arg1 arg2 arg352 này không phải là $ python test.py arg1 arg2 arg351, chúng tôi kiểm tra xem nó có bằng với $ python test.py arg1 arg2 arg354 (là tổng của các đối số 3 và 4 của chúng tôi)$ python test.py arg1 arg2 arg322 Ví dụ: nếu chúng tôi chuyển vào $ python test.py arg1 arg2 arg357 và $ python test.py arg1 arg2 arg358 và giá trị dự kiến là $ python test.py arg1 arg2 arg359, chúng tôi sẽ không thấy bất kỳ nội dung nào được in ra (vì $ python test.py arg1 arg2 arg360 là $ python test.py arg1 arg2 arg359) Chúng tôi cũng có thể đã chỉ định đối số dự kiến đó với $ python test.py arg1 arg2 arg362 thay vì $ python test.py arg1 arg2 arg348 $ python test.py arg1 arg2 arg323 Đối số này có thể hơi ngớ ngẩn, nhưng chúng ta có thể sử dụng nó để xác nhận các vấn đề với phép cộng dấu phẩy động Chẳng hạn, chúng tôi đang thêm $ python test.py arg1 arg2 arg364 và $ python test.py arg1 arg2 arg365 để kiểm tra xem nó có chính xác bằng $ python test.py arg1 arg2 arg366 hay không (không phải vậy) $ python test.py arg1 arg2 arg324 Sự bổ sung này cho chúng tôi một số rất gần với $ python test.py arg1 arg2 arg366 (nhưng không chính xác là $ python test.py arg1 arg2 arg366) nên chúng tôi thấy một thông báo lỗi được in ra Đối số dòng lệnh tùy chọn không có giá trịChúng tôi cũng có thể tạo các đối số dòng lệnh tùy chọn không chấp nhận giá trị Trong phiên bản 1 này, chúng tôi chấp nhận đối số 0 tùy chọn$ python test.py arg1 arg2 arg325 Sự hiện diện đơn thuần của một đối số 0 sẽ lưu trữ giá trị 2$ python test.py arg1 arg2 arg326 Nếu đối số đó không được đưa ra, thuộc tính 3 sẽ là một cái gì đó sai (xem tính trung thực) và nếu nó được đưa ra, chúng ta sẽ nhận được 2$ python test.py arg1 arg2 arg327 Vì vậy, khi đối số 0 được đưa ra, chương trình của chúng tôi sẽ in ra các số mà chúng tôi đang cộng lại với nhau$ python test.py arg1 arg2 arg328 Khi 0 không được cung cấp, chương trình của chúng tôi thực hiện chính xác những gì nó đã làm trước đâyThêm tài liệu cho giao diện dòng lệnh sử dụng $ python3 add_old.py 3 4 7.0 2Mô-đun 2 cũng cho phép bạn thêm tài liệu cho giao diện dòng lệnh của mìnhĐây là một phiên bản nữa của chương trình 1 của chúng tôi với rất nhiều văn bản trợ giúp được thêm vào$ python test.py arg1 arg2 arg329 Nếu người dùng cuối yêu cầu trợ giúp khi chạy chương trình này, họ sẽ thấy một số thông tin sử dụng rất hữu ích 0Thông tin sử dụng này cho người dùng cuối biết rằng chương trình này
Bản tóm tắtNếu bạn đang cố gắng tạo giao diện dòng lệnh thân thiện trong Python, bạn có thể sử dụng 2 (có trong thư viện chuẩn của Python)Mô-đun 2 tạo ra các giao diện dòng lệnh tiêu chuẩn khá điển hình hoặc bình thường trên Linux, Mac và Windows
Sys argv hoạt động như thế nào trong Python?sys. argv là danh sách các đối số dòng lệnh được truyền cho chương trình Python. argv đại diện cho tất cả các mục xuất hiện thông qua đầu vào dòng lệnh , về cơ bản nó là một mảng chứa các đối số dòng lệnh của chương trình của chúng ta. Đừng quên rằng việc đếm bắt đầu từ số không (0) chứ không phải một (1).
Phân tích cú pháp có nghĩa là gì trong Python?Phân tích cú pháp được định nghĩa là quá trình chuyển đổi mã sang ngôn ngữ máy để phân tích cú pháp chính xác của mã . Python cung cấp một thư viện được gọi là trình phân tích cú pháp.
parse_args trả về cái gì?parse_args() trả về hai giá trị. các tùy chọn, một đối tượng chứa các giá trị cho tất cả các tùy chọn của bạn — e. g. nếu "--file" nhận một đối số chuỗi đơn, thì các tùy chọn. tệp sẽ là tên tệp do người dùng cung cấp hoặc Không có nếu người dùng không cung cấp tùy chọn đó. |