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ênHã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àyimport 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']
3Bạ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']
9Truy 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']
8Chạ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']
0Bạ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 các đố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']
88Kị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']
89Trong 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']
8Trong 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']
5Hã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']
9Như 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']
5Cá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, bạn vẫn còn nhiều việc phải 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