Tệp vượt qua Python dưới dạng biến

Chạy tập lệnh Python từ dòng lệnh có thể là một cách tuyệt vời để tự động hóa quy trình làm việc của bạn. Để làm điều này, bạn sẽ cần học cách chuyển đối số từ dòng lệnh sang tập lệnh Python. Điều này sẽ cho phép bạn tạo các tập lệnh có thể sử dụng lại, có thể cập nhật hoặc chạy cho các tình huống hoặc dữ liệu mới bằng cách chỉ chuyển vào một vài đối số mới. Trong Python, việc lấy đối số từ dòng lệnh thành tập lệnh khá dễ dàng

Trước khi bạn có thể truyền đối số cho tập lệnh, bạn cần hiểu cách chạy tập lệnh Python từ dòng lệnh. Thực hiện theo hướng dẫn này để được hướng dẫn từng bước

Trong Python, các đối số được chuyển đến một tập lệnh từ dòng lệnh bằng gói

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
6. Thành viên
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
7 của
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
6 [
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9] sẽ lưu trữ tất cả thông tin trong mục nhập dòng lệnh và có thể được truy cập bên trong tập lệnh Python. Mô-đun
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
0 của Python cũng có thể được sử dụng để phân tích các đối số được đặt tên

Hãy đi qua một số ví dụ

Tập lệnh Python để đọc đối số dòng lệnh

Để bắt đầu, chúng tôi sẽ tạo một tập lệnh in ra toàn bộ câu lệnh dòng lệnh. Sau đó, chúng ta có thể kiểm tra cách các đối số được truyền và tìm hiểu cách kết hợp chúng vào mã của chúng ta

Trong tập lệnh Python, chúng tôi sẽ nhập

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
6, sau đó chỉ cần in ra toàn bộ giá trị của
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9. Kịch bản trông như thế này

import sys

print['cmd entry:', sys.argv]

Lưu tập lệnh này dưới dạng

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
3. Bây giờ chúng tôi sẽ gọi tập lệnh này từ dòng lệnh [làm theo hướng dẫn này nếu bạn cần hướng dẫn], như sau. Đảm bảo thư mục làm việc của bạn là cùng thư mục chứa
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
3

Bạn sẽ nhận thấy khi tôi gọi tập lệnh mà tôi đã bao gồm ba đối số được phân tách bằng dấu cách [arg1, arg2 và arg3]. Đây chỉ là để minh họa cách

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
6 lưu trữ và hiển thị các đối số. Chúng không có ý nghĩa gì

Đây là cuộc gọi của tôi tới

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
3 từ dòng lệnh. Dòng mã thứ hai hiển thị đầu ra

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']

Bạn có thể thấy rằng

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9 đã lưu trữ các đối số dưới dạng chuỗi trong danh sách. Hãy thử lại điều này với các loại dữ liệu khác nhau [float, int và string] để xem chúng được lưu trữ như thế nào

Đây là lệnh gọi và đầu ra của tập lệnh

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']

Như bạn có thể thấy, số float và số nguyên cũng được lưu trữ dưới dạng chuỗi bởi

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9

Truy cập đối số dòng lệnh trong tập lệnh Python

Bây giờ chúng ta đã có một số thông tin cơ bản về cách truy cập các đối số dòng lệnh và cách chúng được lưu trữ, chúng ta có thể bắt đầu phân tích cú pháp các đối số đó để sử dụng trong tập lệnh của mình

Trong ví dụ đơn giản này, chúng tôi sẽ lặp qua từng đối số [ngoại trừ đối số đầu tiên, là tên tập lệnh] và in nó ra bàn điều khiển

Hãy bắt đầu bằng cách cập nhật tập lệnh Python,

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
3. Chúng tôi sẽ thêm một vòng lặp để lặp qua ba đối số cuối cùng trong
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9. Đối với mỗi phần tử, chúng tôi sẽ in ra chỉ mục [hoặc vị trí] và giá trị của nó

Đây là kịch bản mới. Lưu ý rằng chúng tôi lặp qua một

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
81 bắt đầu từ 1. Điều này bỏ qua đối số đầu tiên, đó là tên tập lệnh

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
8

Chạy tập lệnh bằng cách sử dụng nhóm đối số cuối cùng. Như thế này

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
0

Bạn sẽ nhận được đầu ra trông như thế này

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
1

Điều đó cung cấp cho bạn kiến ​​thức cơ bản về việc chuyển đối số dòng lệnh sang tập lệnh Python. Từ đây, có thể bạn sẽ muốn thực hiện một số kiểm tra logic để đảm bảo các giá trị đầu vào là loại phù hợp và nằm trong phạm vi hoặc tập hợp giá trị chính xác

Cải thiện phân tích đối số dòng lệnh Python

Các ví dụ trên cung cấp các ví dụ đơn giản để giúp bạn bắt đầu. Tuy nhiên, nếu bạn đang tìm kiếm thứ gì đó nâng cao hơn cho phép người dùng chỉ định đối số bằng từ khóa và in thông báo trợ giúp, chúng tôi sẽ cần nâng cao hơn một chút

Để truy xuất các đối số được đặt tên từ dòng lệnh, chúng tôi sẽ sử dụng mô-đun

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
82 của Python.
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
0 được tích hợp vào Python cơ sở nên bạn không cần cài đặt nó

Hãy bắt đầu một tập lệnh mới sử dụng cả

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
6 và
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
0 để phân tích các đối số dòng lệnh. Tập lệnh sẽ có khả năng có bốn đối số được đặt tên, 'trợ giúp', 'đầu vào', 'người dùng' và 'đầu ra'. Từ dòng lệnh, các đối số này có thể được chỉ định bằng một dấu gạch ngang và chữ cái đầu tiên [
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
86] hoặc một dấu gạch ngang kép và tên đầy đủ của đối số [
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
87]. Đặt tên cho tập lệnh này là
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
88

Kịch bản này sẽ bao gồm hai phần. Phần đầu tiên là một hàm [

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
89] sẽ lấy các đối số [
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
7] làm đầu vào. Phần thứ hai là một câu lệnh if sẽ nhận ra khi tập lệnh được gọi và chuyển các đối số từ
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9 sang
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
89

Trong phần thân của

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
89, chúng tôi sẽ xác định các biến cho đầu vào, người dùng và đầu ra. Chúng tôi cũng sẽ xác định một biến cho 'trợ giúp' và đặt giá trị cho nó. Biến 'trợ giúp' sẽ in ra nếu xảy ra lỗi hoặc nếu người dùng chỉ định
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
86 hoặc
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
87.

Bây giờ, hãy gọi

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
06 và truyền cho nó các đối số từ dòng lệnh, chứ không phải tên tập lệnh [như thế này.
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
07]. Trong cuộc gọi đến
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
0 cũng là nơi chúng tôi chỉ định cả tên ngắn và tên dài. Dấu hai chấm [. ] theo sau
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
09,
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
10 và
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
11 cho biết rằng giá trị là bắt buộc đối với tham số đó. Các dấu bằng [=] theo sau
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
12,
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
13 và
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
14 cho biết điều tương tự

Tôi đã đặt cuộc gọi tới

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
06 thành một câu lệnh
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
16
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
17 để tập lệnh sẽ in thông báo trợ giúp và sau đó thoát ra nếu có bất kỳ sự cố nào. Đây là những gì kịch bản trông giống như cho đến nay

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
8

Trong phần cuối cùng của tập lệnh, chúng tôi sẽ phân tích cú pháp các đối số dựa trên tên hoặc từ khóa ngắn hoặc dài của chúng và in ra các giá trị cuối cùng

Để bắt đầu, lặp qua tất cả các phần tử của

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
18. Điều này sẽ trả về tên đối số [
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
19] và giá trị [
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
80]. Sau đó, sử dụng câu lệnh
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
81,
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
82,
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
83 để xác định biến nào sẽ gán đối số. Sau khi tất cả các đối số đã được xử lý, hãy in ra tên đối số và giá trị của nó

Kịch bản cuối cùng sẽ trông giống như thế này

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
5

Hãy sử dụng tập lệnh này theo một số cách khác nhau để xem điều gì sẽ xảy ra

Trước tiên, hãy nhận thông báo trợ giúp bằng cách sử dụng cả tên

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
86 ngắn và tên dài
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
87

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
8
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
0
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
9

Như mong đợi, cả hai ví dụ đều dẫn đến việc in thông báo trợ giúp ra bảng điều khiển

Tiếp theo, hãy xem điều gì sẽ xảy ra nếu chúng ta chỉ định một tên đối số không hợp lệ,

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py 198.3 9 arg3
cmd entry: ['myscript.py', '198.3', '9', 'arg3']
86

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
2____59

Điều này gây ra lỗi, dẫn đến việc in lại thông báo trợ giúp ra bảng điều khiển

Bây giờ, hãy nhập các đối số chính xác

>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
4
>>> c:\code\python\tutorials\cmd_scripts>python myscript.py arg1 arg2 arg3
cmd entry: ['myscript.py', 'arg1', 'arg2', 'arg3']
5

Các đối số được gán cho các biến thích hợp

Bước tiếp theo

Bài viết này cung cấp cho bạn kiến ​​thức cơ bản về cách truyền và phân tích đối số dòng lệnh bằng Python. Để triển khai chính thức, vẫn còn nhiều việc bạn muốn làm. Điều quan trọng là phải kiểm tra các loại và giá trị của các đối số đầu vào để đảm bảo chúng hợp lệ. Bạn cũng sẽ muốn đảm bảo in ra các thông báo hữu ích cho người dùng khi xảy ra lỗi hoặc ngoại lệ khác. Nếu bạn chỉ triển khai tính năng này cho mục đích sử dụng cá nhân, thì những tính năng đó không quá quan trọng. Tôi nhận thấy rằng việc viết các tập lệnh Python để chạy từ dòng lệnh đã giúp tôi tự động hóa nhiều tác vụ và phân tích của mình, đồng thời tiết kiệm cho tôi rất nhiều thời gian

TÌM HIỂU GIS TỪ CÁC CHUYÊN GIA TRONG CÔNG NGHIỆP

Cho dù bạn đang muốn nâng cao kỹ năng GIS của mình hay chỉ mới bắt đầu với GIS, chúng tôi đều có khóa học dành cho bạn. Chúng tôi liên tục tạo và quản lý nhiều khóa học hơn để giúp bạn cải thiện kỹ năng không gian địa lý của mình

QGIS cho người mới bắt đầu

Viễn thám với QGIS

QGIS Python Scripting với PyQGIS

Nhấn vào đây để xem tất cả các khóa học của chúng tôi

Tất cả các khóa học của chúng tôi đều do các chuyên gia trong ngành giảng dạy và bao gồm video hướng dẫn từng bước để bạn không bị lạc trong các video và bài đăng trên blog trên YouTube, dữ liệu có thể tải xuống để bạn có thể sao chép mọi thứ mà người hướng dẫn làm và mã bạn có thể sao chép để bạn

Chủ Đề