Và nếu bạn đang làm việc với Python, thì bạn có thể đã thử tự động hóa mọi thứ. Đó là một cách để tiết kiệm thời gian. Bạn cũng có thể có một số tập lệnh bash để tự động hóa mọi thứ
Python thuận tiện để viết tập lệnh hơn bash. Và việc quản lý tập lệnh Python dễ dàng so với tập lệnh bash. Bạn sẽ thấy khó duy trì các tập lệnh bash khi nó đang phát triển
Nhưng nếu bạn đã có tập lệnh bash mà bạn muốn chạy bằng Python thì sao?
Có cách nào để thực thi lệnh bash và tập lệnh trong Python không?
Vâng, Python có một mô-đun tích hợp được gọi là quy trình con được sử dụng để thực thi các lệnh và tập lệnh bên trong tập lệnh Python. Hãy xem cách thực thi các lệnh bash và tập lệnh trong tập lệnh Python một cách chi tiết
Thực hiện các lệnh Bash
Như bạn có thể đã thấy, quy trình con của mô-đun được sử dụng để thực thi các tập lệnh và lệnh bash. Nó cung cấp các phương thức và lớp khác nhau cho cùng một
Về cơ bản, có một phương thức và một lớp để biết về mô-đun quy trình con. Họ đang chạy và Popen. Hai điều này giúp chúng tôi thực thi các lệnh bash trong tập lệnh Python. Hãy xem từng người một
quy trình con. chạy[]
Phương thức
import subprocess
subprocess.run[["ls", "-la"]]
3 sẽ lấy một danh sách các chuỗi làm đối số vị trí. Điều này là bắt buộc vì nó có lệnh bash và đối số cho nó. Mục đầu tiên trong danh sách là tên lệnh và các mục còn lại là đối số của lệnhHãy xem một ví dụ nhanh
import subprocess
subprocess.run[["ls"]]
Tập lệnh trên liệt kê tất cả các mục trong thư mục làm việc hiện tại dưới dạng tập lệnh nằm. Không có đối số cho lệnh trong tập lệnh trên. Chúng tôi chỉ đưa ra lệnh bash. Chúng ta có thể cung cấp các đối số bổ sung cho lệnh
import subprocess
subprocess.run[["ls", "-la"]]
4 như import subprocess
subprocess.run[["ls", "-la"]]
5, import subprocess
subprocess.run[["ls", "-la"]]
6, import subprocess
subprocess.run[["ls", "-la"]]
7, v.v.Hãy xem một ví dụ nhanh với các đối số lệnh
import subprocess
subprocess.run[["ls", "-la"]]
Lệnh trên hiển thị tất cả các tệp bao gồm các tệp ẩn cùng với các quyền. Chúng tôi đã cung cấp đối số
import subprocess
subprocess.run[["ls", "-la"]]
8 hiển thị thông tin bổ sung về tệp và thư mục cũng như tệp ẩnCuối cùng, chúng tôi có thể mắc một số lỗi khi viết lệnh. Lỗi sẽ tăng theo lỗi. Điều gì sẽ xảy ra nếu bạn muốn chụp chúng và sử dụng chúng sau này?
Hãy xem một ví dụ
________số 8Đảm bảo rằng bạn không có tệp có tên mẫu. txt trong thư mục làm việc. Giá trị cho đối số từ khóa stderr là PIPE giúp trả về lỗi trong một đối tượng. Chúng ta có thể truy cập nó sau với cùng tên. Và đối số từ khóa văn bản giúp cho biết rằng đầu ra phải là một chuỗi
Tương tự, chúng ta có thể nắm bắt đầu ra của lệnh bằng cách sử dụng đối số từ khóa stdout
import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
quy trình con. chạy[] – đầu vào
Bạn có thể cung cấp thông tin đầu vào cho các lệnh bằng cách sử dụng đối số từ khóa đầu vào. Chúng tôi sẽ cung cấp đầu vào ở định dạng chuỗi. Vì vậy, chúng ta cần đặt văn bản đối số từ khóa thành
import subprocess
subprocess.run[["ls", "-la"]]
9. Theo mặc định, nó lấy nó theo byteHãy xem một ví dụ
import subprocess
subprocess.run[["ls"]]
1Trong chương trình trên, tập lệnh Python thêm. py sẽ lấy hai số làm đầu vào. Chúng tôi đã cung cấp thông tin đầu vào cho tập lệnh Python bằng cách sử dụng đối số từ khóa đầu vào
quy trình con. Giáo hoàng []
Lớp quy trình con. Popen[] cao cấp hơn quy trình con của phương thức. chạy[]. Nó cung cấp cho chúng ta nhiều tùy chọn hơn để thực hiện các lệnh. Chúng tôi sẽ tạo một phiên bản của quy trình con. Popen[] và sử dụng nó cho nhiều việc khác nhau như biết trạng thái thực thi lệnh, nhận đầu ra, đưa đầu vào, v.v. ,
Có một số phương thức của quy trình con của lớp. Popen[] mà chúng ta cần biết. Hãy xem từng cái một cùng với các ví dụ mã
Chờ đã
Nó được sử dụng để đợi cho đến khi hoàn thành việc thực thi lệnh. Các dòng tiếp theo của tập lệnh Python sẽ không thực thi cho đến khi hoàn thành lệnh trước đó được viết sau phương thức
import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
0. Hãy xem ví dụimport subprocess
subprocess.run[["ls"]]
3Chạy đoạn mã trên và quan sát đầu ra. Bạn sẽ thấy thông báo Đã hoàn thành. được in trước khi thực hiện lệnh. Chúng ta có thể tránh nó bằng cách sử dụng phương pháp
import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
0. Hãy đợi cho đến khi hoàn thành lệnhimport subprocess
subprocess.run[["ls"]]
5Nếu bạn thấy đầu ra của đoạn mã trên, thì bạn sẽ nhận ra rằng
import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
0 đang thực sự hoạt động. Câu lệnh in được thực hiện sau khi hoàn thành việc thực hiện lệnhgiao tiếp
Phương thức
import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
3 được sử dụng để lấy đầu ra, lỗi và đưa đầu vào cho lệnh. Nó trả về một tuple chứa đầu ra và lỗi tương ứng. Hãy xem một ví dụimport subprocess
subprocess.run[["ls"]]
8quy trình con. Popen[] – đầu vào
Chúng tôi không thể chuyển đầu vào cho lớp
import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
4 trực tiếp. Chúng ta cần sử dụng đối số từ khóa có tên là stdin để cung cấp đầu vào cho lệnh. Thể hiện của lớp import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
4 sẽ cung cấp cho chúng ta đối tượng import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
6. Nó có một phương thức gọi là import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
7 được sử dụng để cung cấp đầu vào cho lệnhNhư chúng ta đã thảo luận trước đó, theo mặc định, nó sẽ lấy đầu vào là các đối tượng giống như byte. Vì vậy, đừng quên đặt văn bản đối số từ khóa thành
import subprocess
subprocess.run[["ls", "-la"]]
9 trong khi tạo phiên bản của import subprocess
result = subprocess.run[["cat", "sample.txt"], stderr=subprocess.PIPE, text=True]
print[result.stderr]
4Hãy xem một ví dụ
import subprocess
subprocess.run[["ls", "-la"]]
5thăm dò ý kiến
Phương thức
import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
0 dùng để kiểm tra việc thực hiện lệnh đã hoàn thành hay chưa. Phương thức này sẽ trả về import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
1 nếu lệnh vẫn đang thực thi. Hãy xem một ví dụimport subprocess
subprocess.run[["ls", "-la"]]
8Trong đoạn mã trên, chúng tôi đã sử dụng lệnh
import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
2 với 5 yêu cầu. Có một vòng lặp vô tận lặp đi lặp lại cho đến khi hoàn thành việc thực thi lệnh. Chúng tôi đã sử dụng phương thức import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
0 để kiểm tra trạng thái thực thi lệnh. Nếu phương thức import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
0 trả về mã khác với import subprocess
result = subprocess.run[["echo", "Hello, World!"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True]
print[result.stdout]
1, thì quá trình thực thi hoàn tất. Và vòng lặp vô tận bị phá vỡThực thi các tập lệnh Bash
Chúng tôi đã thấy hai cách để thực hiện các lệnh. Bây giờ, hãy xem cách thực thi các tập lệnh bash trong tập lệnh Python
Quy trình con có một phương thức được gọi là cuộc gọi. Phương pháp này được sử dụng để thực thi các tập lệnh bash. Phương thức trả về mã thoát từ tập lệnh bash. Mã thoát mặc định cho tập lệnh bash là 0. Hãy xem một ví dụ
Tạo một tập lệnh bash với tên thực hành. như sau
import subprocess
subprocess.run[["ls", "-la"]]
0Bây giờ, hãy viết một tập lệnh Python thực thi tập lệnh bash ở trên
import subprocess
subprocess.run[["ls", "-la"]]
1Bạn sẽ nhận được kết quả sau khi chạy tập lệnh Python ở trên
import subprocess
subprocess.run[["ls", "-la"]]
2Sự kết luận
Chúng ta đã thấy cách thực thi lệnh bash và script trong Python. Bạn có thể sử dụng chúng để tự động hóa mọi thứ hiệu quả hơn