Chức năng gọi python từ dòng lệnh với đối số

Điều gì sẽ xảy ra nếu chúng ta muốn chuyển thông tin đến chương trình Python của mình để thay đổi cách nó chạy?

Truyền đối số dòng lệnh

Khi bạn chạy một chương trình từ tệp , bạn có thể chuyển vào chương trình

Ở đây chúng tôi có một chương trình gọi là

$ python3 greet.py Trey
Hello world
3

Ở đây chúng tôi đang gọi chương trình này

$ python3 greet.py
Hello world

Đối số chức năng so với đối số dòng lệnh

Từ "đối số" là một thuật ngữ được tải

Trong Python, chúng ta có các đối số hàm là đầu vào của một hàm. Nhưng đối số dòng lệnh là đầu vào cho toàn bộ chương trình

Vì vậy, đối số hàm và đối số dòng lệnh không liên quan nhiều lắm, ngoại trừ việc cả hai đều là đầu vào của một thứ gì đó

Python chấp nhận bất kỳ đối số dòng lệnh nào mà chúng tôi cung cấp cho nó

Bạn nghĩ điều gì sẽ xảy ra nếu chúng ta chuyển một đối số cho chương trình

$ python3 greet.py Trey
Hello world
3 của mình khi chúng ta chạy nó thông qua Python?

Chương trình

$ python3 greet.py Trey
Hello world
3 của chúng tôi hoàn toàn không sử dụng đối số dòng lệnh. Nó chỉ là một dòng mã

Vì vậy, dự đoán của bạn là gì?

Khi chúng tôi chạy chương trình

$ python3 greet.py Trey
Hello world
3 này với đối số
$ python3 greet.py Trey
Hello world
9, chúng tôi thấy
$ python3 greet.py Trey
Hello world
6 được in ra

$ python3 greet.py Trey
Hello world

Đó là một chút kỳ lạ

Python chỉ bỏ qua bất kỳ đối số nào mà chúng tôi đã chuyển đến chương trình này. Python lưu trữ tất cả các đối số mà chúng ta đưa ra, nhưng nó không làm gì với các đối số. tùy thuộc vào chúng tôi (người thực hiện chương trình này) để làm điều gì đó với họ

Đối số dòng lệnh được lưu trữ ở đâu?

Python lưu trữ các đối số dòng lệnh trong mô-đun

$ python3 greet.py
Hello world
01 trong danh sách có tên

$ python3 greet.py
Hello world
0

Danh sách

$ python3 greet.py
Hello world
03 có tất cả các đối số được chuyển đến chương trình Python của chúng tôi

$ python3 greet.py
Hello world
3

Danh sách

$ python3 greet.py
Hello world
03 của chúng tôi ở đây có hai thứ trong đó, tên chương trình của chúng tôi và đối số mà chúng tôi đã chuyển vào

$ python3 greet.py
Hello world
5

Điều đầu tiên trong

$ python3 greet.py
Hello world
03 sẽ luôn là tên chương trình của chúng tôi

Nếu chúng tôi muốn lấy đối số sau tên chương trình của mình, chúng tôi có thể đọc mục thứ hai (chỉ mục

$ python3 greet.py
Hello world
06) từ
$ python3 greet.py
Hello world
03

$ python3 greet.py
Hello world
9

Chúng tôi giả sử rằng chúng tôi nhận được một đối số được chuyển vào và chúng tôi đang in đối số đó ra

$ python3 greet.py Trey
Hello world
0

Nếu tôi chuyển nhiều hơn một đối số, chương trình của chúng tôi hiện đang bỏ qua mọi thứ sau đối số đầu tiên đó

$ python3 greet.py Trey
Hello world
1

Điều gì xảy ra nếu chúng ta vượt qua quá ít đối số?

$ python3 greet.py Trey
Hello world
2

Nếu chúng tôi chuyển qua hai đối số, chúng tôi sẽ nhận được một

$ python3 greet.py
Hello world
08 (vì
$ python3 greet.py
Hello world
03 không có chỉ số
$ python3 greet.py
Hello world
06 trong trường hợp này)

Xử lý thủ công

$ python3 greet.py
Hello world
03 là điều mà bạn chỉ nên làm đối với các chương trình Python rất đơn giản. các chương trình không cần xử lý đối số dòng lệnh phức tạp và lý tưởng nhất là chỉ làm điều này cho các chương trình chỉ dành cho bạn sử dụng

Python cung cấp tất cả các đối số dòng lệnh dưới dạng chuỗi

Hãy xem một ví dụ khác. Ở đây chúng tôi có một chương trình gọi là

$ python3 greet.py
Hello world
32

$ python3 greet.py Trey
Hello world
8

Chương trình này lấy

$ python3 greet.py
Hello world
03 và giải nén nó thành ba biến. tên chương trình và bất kỳ hai đối số nào được đưa ra sau đó

Sau đó, nó cộng các đối số đó lại với nhau và in chúng ra

Chúng ta sẽ thấy gì khi chạy

$ python3 greet.py
Hello world
32 với
$ python3 greet.py
Hello world
35 và
$ python3 greet.py
Hello world
36?

Hãy đoán

6?

5?

100?

Đây là những gì chúng ta thấy khi chạy

$ python3 greet.py
Hello world
32 với
$ python3 greet.py
Hello world
35 và
$ python3 greet.py
Hello world
36

Kỳ lạ, phải không?

Nếu chúng tôi

$ python3 greet.py
Hello world
54 ra
$ python3 greet.py
Hello world
03

$ python3 greet.py Trey
Hello world
0

Chúng ta sẽ thấy rằng đó là một danh sách các chuỗi

$ python3 greet.py Trey
Hello world
1

Python lưu trữ tất cả các đối số dòng lệnh dưới dạng chuỗi vì tất cả các đối số dòng lệnh được hệ điều hành cấp cho Python dưới dạng văn bản. Python không thực hiện bất kỳ xử lý nào với chúng;

Vì vậy, nếu chúng tôi muốn

$ python3 greet.py
Hello world
35 và
$ python3 greet.py
Hello world
36 là số, chúng tôi sẽ phải tự chuyển đổi chúng thành số

$ python3 greet.py Trey
Hello world
2

Bây giờ cuối cùng chúng tôi cũng thấy kết quả mà chúng tôi mong đợi

Đối số dòng lệnh được lưu trữ trong danh sách $ python3 greet.py Hello world 03

Nếu bạn cần tạo một giao diện dòng lệnh rất đơn giản (chỉ dành cho bạn) và không cần phải thân thiện, bạn có thể đọc

$ python3 greet.py
Hello world
03 để xử lý thủ công các đối số trong chương trình của mình. Nhưng nếu bạn cần thứ gì đó phức tạp hơn, có lẽ bạn nên sử dụng một công cụ xử lý đối số dòng lệnh phù hợp (như mô-đun
$ python3 greet.py
Hello world
90 của Python). Điều gì sẽ xảy ra nếu chúng ta muốn chuyển thông tin đến chương trình Python của mình để thay đổi cách nó chạy?

Làm cách nào để chạy tập lệnh Python từ cmd với các đối số?

tên tập lệnh. .
Thí dụ. Hãy xem xét thử nghiệm tập lệnh sau. py − #. /usr/bin/python import sys print 'Số đối số. ', len(sys. .
Phân tích đối số dòng lệnh. Python đã 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. .
getopt. phương pháp getopt. .
getopt ngoại lệ. GetoptError

Làm cách nào để truyền đối số cho hàm trong khi thực thi tập lệnh Python từ thiết bị đầu cuối?

Lựa chọn tốt nhất là sử dụng mô-đun argparse , mô-đun này có nhiều tính năng mà bạn có thể sử dụng. Vì vậy, bạn phải phân tích các đối số trong mã của mình và cố gắng nắm bắt và tìm nạp các đối số bên trong mã của bạn. Bạn không thể chuyển các đối số qua thiết bị đầu cuối mà không phân tích cú pháp chúng từ mã của mình.

Làm cách nào để gọi tập lệnh Python từ một tập lệnh Python khác có đối số?

Các bước để chạy một tập lệnh Python từ một tập lệnh khác .
Bước 1. Đặt các tập lệnh Python trong cùng một thư mục. Để bắt đầu, hãy đặt các tập lệnh Python của bạn vào cùng một thư mục. .
Bước 2. Thêm cú pháp. Tiếp theo, thêm cú pháp vào từng tập lệnh của bạn. .
Bước 3. Chạy một tập lệnh Python từ một tập lệnh khác