Về bản chất, Sys. argv() là danh sách tất cả các đầu vào dòng lệnh. Khi tập lệnh được thực thi, bạn có thể cung cấp đầu vào của người dùng theo nhiều cách khác nhau và một cách như vậy là thông qua dòng lệnh. Trong trường hợp đầu tiên này, giả sử rằng chúng ta có một tập lệnh đơn giản có tên là main. py chính. py Trong khi thực thi tập lệnh, chúng tôi sẽ thêm một vài đối số dòng lệnh ngoài tên tập lệnh. Nếu chúng tôi thực thi tập lệnh, chúng tôi sẽ nhận được như sau $ python3 chính. py bạn đang làm gì vậy? Bạn nhận thấy ở đây rằng các đối số dòng lệnh không can thiệp vào chính tập lệnh Vì vậy, bây giờ, hãy sửa đổi kịch bản một chút. Vì vậy, giả sử rằng bây giờ chúng ta có một kịch bản tên là main. py với nội dung sau chính. py Nếu chúng tôi thực thi tập lệnh, chúng tôi sẽ nhận được như sau $ python3 chính. py Như bạn có thể thấy, chúng tôi nhận được một danh sách có một mục trong đó vì chúng tôi chỉ cung cấp cho nó một mục, tên tập lệnh. Bây giờ, giả sử rằng chúng ta cung cấp cho nó một đối số đầu vào dòng lệnh hơi khác chính. py Nếu chúng tôi thực thi tập lệnh, chúng tôi sẽ nhận được như sau $ python3 chính. py xin chào thế giới Bây giờ, điều xảy ra là nó truy xuất mọi thứ chúng tôi đã cung cấp qua dòng lệnh hoặc tất cả các đối số dòng lệnh do người dùng cung cấp. Trong trường hợp của tôi, tôi đã thêm 'hello world' sau tên của tập lệnh và như vậy, nó đã truy xuất tập lệnh đó vào danh sách hệ thống. argv[0] hệ thống. argv[0] là đối số đầu tiên trong danh sách. Trong mọi trường hợp, đối số đầu tiên luôn là tên của tập lệnh chính. py Khi thực thi tập lệnh, chúng tôi sẽ gõ như sau $ python3 chính. py hệ thống. argv[n] Ngoài ra, bạn có thể muốn truy xuất một đối số dòng lệnh cụ thể. Ví dụ: bạn có thể muốn truy xuất đầu vào của người dùng thông qua các đối số dòng lệnh khi viết chương trình Python. Trong trường hợp này, chúng tôi sẽ truy xuất ba đối số dòng lệnh đầu tiên chính. py Khi thực thi tập lệnh, chúng ta sẽ gõ như sau chẳng hạn $ python3 chính. py Trevor Travis Tim Đây, sys. argv[1] là đối số dòng lệnh thứ hai, trong khi sys. argv[2] là đối số dòng lệnh thứ ba và sys. argv[3] là đối số dòng lệnh thứ tư. Điều này là như vậy bởi vì mặc dù chỉ mục bắt đầu từ 0 và sys. argv[0] là tên của tập lệnh Vậy điều gì sẽ xảy ra nếu người dùng phải nhập n số lượng đầu vào và chúng tôi không biết có bao nhiêu đầu vào? chính. py Khi thực thi tập lệnh, chúng ta sẽ gõ như sau chẳng hạn $ python3 chính. py xin chào Trevor Travis và Tim Đây, sys. argv[1. ] có nghĩa là tất cả các giá trị từ sys. argv[1] được sử dụng cho đến hết danh sách. Trong trường hợp này, chúng ta có thể thêm bao nhiêu đối số dòng lệnh tùy thích Dây Xin lưu ý rằng tất cả các giá trị được ghi lại bởi biến sys. argv là các chuỗi. Vì vậy, giả sử rằng chúng tôi muốn thêm ba số mà người dùng nhập vào chính2. py Nếu chúng tôi thực thi tập lệnh, chúng tôi sẽ nhận được như sau $ python3 main2. py 3 4 5 Những gì chúng tôi nhận được là TypeError. Điều này là do tất cả các giá trị thu được từ danh sách là các giá trị "chuỗi" trong khi chúng tôi yêu cầu các giá trị số nguyên để thêm vào. Để sửa lỗi này, chúng ta sẽ phải chuyển đổi các chuỗi thành số nguyên chính2. py Nếu chúng tôi thực thi tập lệnh, chúng tôi sẽ nhận được như sau $ python3 main2. py 3 4 5 Chúng tôi đã thêm int(sys. arg[n]) đảm bảo rằng chúng tôi đã chuyển đổi chuỗi thành số nguyên hệ thống. lỗi argv Một trong những lỗi phổ biến nhất được đưa ra (khi chúng tôi không sử dụng sys. argv[1. ] mà chỉ định giá trị thứ n bằng cách sử dụng sys. argv[n]) là của IndexError (liệt kê chỉ mục nằm ngoài phạm vi). Lỗi này có nghĩa là các đối số dòng lệnh không được chỉ định và để tránh lỗi này, chúng ta phải thực hiện một số bước phòng ngừa chính. py Khi thực thi tập lệnh, chúng ta sẽ gõ như sau chẳng hạn $ python3 chính. py Travis Trevor Tim Để tránh lỗi, chúng ta phải điều chỉnh độ dài của các đối số dòng lệnh. Trong ví dụ trước, chúng ta có ba tên và một tên tập lệnh, có nghĩa là có tổng cộng 4 giá trị. Vì vậy, chúng tôi nói rằng nếu độ dài lớn hơn 4 hoặc nhỏ hơn 4, thì yêu cầu người dùng nhập ba tên; Mô-đun sys rất quan trọng vì nó cho phép tương tác với trình thông dịch Python. Đặc biệt, biến sys. argv là một danh sách chứa tất cả các đối số dòng lệnh đã nhập của người dùng. hệ thống. argv[0] xác định tên của tập lệnh trong mọi trường hợp. mặc dù sys. argv() thường được sử dụng để thu thập các đối số dòng lệnh, một cách khác thậm chí còn tốt hơn để thu thập các đối số dòng lệnh là sử dụng argparse. Nhưng đó là một câu chuyện cho một ngày khác |