Hướng dẫn python run shell command
Với nhiệm vụ lặp đi lặp lại đã hoàn thiện cho tự động hóa. Thông thường các developer và quản trị viên hệ thống sẽ tự động hóa các tác vụ thông thường như health checks và sao lưu tệp bằng các tập lệnh shell. Tuy nhiên, khi các tác vụ đó trở nên phức tạp hơn, các shell script có thể trở nên khó bảo trì hơn. May mắn thay, chúng ta có thể sử dụng Python thay vì shell script để tự động hóa. Python cung cấp các phương thức để chạy các lệnh shell, cung cấp cho chúng ta chức năng tương tự của các tập lệnh shell đó. Học cách chạy các lệnh shell trong Python mở ra cơ hội cho chúng ta tự động hóa các tác vụ máy tính theo cách có cấu trúc và có thể mở rộng. 1. Sử dụng os.system để chạy lệnhPython cho phép chúng ta thực thi ngay một lệnh shell được lưu trữ trong một chuỗi bằng hàm os.system (). Hãy bắt đầu bằng cách tạo một tệp python mới có tên echo_adelle.py
Trong Terminal của bạn, hãy chạy tệp này bằng cách sử dụng lệnh sau và bạn sẽ thấy đầu ra tương ứng:
Khi các lệnh echo in ra, os.system () cũng hiển thị đầu ra trên luồng. Mặc dù không hiển thị trong console, lệnh os.system () trả về mã của lệnh shell. Mã exit 0 có nghĩa là nó chạy mà không có bất kỳ vấn đề nào và bất kỳ số nào khác có nghĩa là lỗi. Để thấy rõ hơn mã exit , tạo file cd_return_codes.py với nội dung: Có thể bạn quan tâm
chúng ta tạo hai biến lưu trữ kết quả của việc thực thi các lệnh thay đổi thư mục vào thư mục chính và thư mục không tồn tại. Chạy tệp này, chúng ta sẽ thấy:
Với câu lệnh đầu, thay đổi thư mục thành thư muc home. os.system() trả về code 0 , với nơi lưu trữ là home_dir. Với cách khác, unknow_dir sẽ trả về mã code failed, với lệnh thay đổi đến thư mục không tồn tại. Os.system() thực thi 1 câu lệnh , in và cho ra kết quả đầu ra tại console, và trả về mã code của câu lệnh đó. 2. Sử dụng subprocessModule subprocess thực sự được khuyên dùng để thực thi các lệnh shell. Nó cho phép chúng ta linh hoạt để lược bớt đầu ra của các lệnh shell hoặc chuỗi đầu vào và đầu ra của các lệnh khác nhau cùng nhau, trong khi vẫn cung cấp trải nghiệm tương tự như os.system () cho các trường hợp sử dụng cơ bản. Tạo file list_subprocess.py với nội dung
Không giống os.system(), module subprocess.run() yêu cầu 1 list chuỗi các lệnh đầu vào thay vì 1 chuỗi string duy nhất , phần từ đầu tiên của list chính là tên lệnh thực thy , phần còn lại là biến số mà lệnh muốn thực hiện Ví dụ: muốn thực hiện lệnh ls -alh sẽ có list ["ls", "-alh"] với tên lênh là ls với các tham số -a -l -h, Tương tự , lệnh echo hello world sẽ thành ["echo", "hello", "world"]hoặc ["echo", "hello world"]
bây giờ muốn chỉnh lại lệnh ls với đầu ra chỉnh lại
Đầu ra tiêu chuẩn của lệnh bây giờ chuyển sang /dev/null, có nghĩa là đầu ra sẽ không xuất hiện trên bảng điều khiển nữa. Thực hiện tệp trong trình bao của bạn để xem đầu ra sau:
Thêm điều kiện cho điều này bằng đối số đầu vào của nó, với file cat_subprocess.py,
Chúng ta cũ có thể raise Exception ngoài các trường hợp check trả về giá trị, tạo file false_subprocess.py
với check= True, exception xảy ra nếu có lỗi 3. Chạy câu lệnh với Popensubprocess.Popen cung cấp nhiều lựa chọn hơn cho developer khi muốn tương tác với shell. Tuy nhiên nó chúng ta cũng cần rõ ràng hơn về việc lấy kết quả và lỗi. Mặc định subprocess.Popen không tự dừng processing của 1 chương trình python nếu lệnh không có hàm kết thúc, tạo 1 file mới list_popen.py
Code này tương đương với code của list_sub process.py. Nó chạy một lệnh bằng cách sử dụng subprocess.Popen và đợi nó hoàn thành trước khi thực thi phần còn lại của tập lệnh Python. Giả sử chúng ta không muốn đợi lệnh shell của mình hoàn thành thực thi để chương trình có thể hoạt động trên những thứ khác. Làm thế nào nó biết khi lệnh shell đã thực hiện xong? Phương thức poll () trả về code exit nếu một lệnh đã chạy xong hoặc Không có nếu nó vẫn đang thực thi. Ví dụ: nếu chúng tôi muốn kiểm tra xem list_dir đã hoàn thành thay vì chờ đợi, chúng ta sẽ có dòng mã sau:
Để quản lý đầu ra , vào của subprocess.Popen, chúng ta cần sử dụng communicate()
Phương thức communicate() lấy tham số input để sử dụng cho đầu ra của shell, nó đồng thời cũng có đầu ra và hiện lỗi khi chúng ta khái báo 4. So sánh
|
Bài Viết Liên Quan
Hecta mét vuông bằng bao nhiêu km vuông?
1 ha bằng bao nhiêu mét vuông? Công thức quy đổi dễ tính nhất.adminJune 10, 20215:31 pmNội dung bài viết5 / 5 ( 2 votes )1 ha bằng bao nhiêu mét vuông? Chúng ta thường ...
Phương thức được định nghĩa trong lớp hình chữ nhật được sử dụng để vẽ hình chữ nhật Python là gì?
lớp Hình chữ nhật (đối tượng). def __init__(self,width=2,height=3,color=r). bản thân. chiều cao = chiều cao bản thân. chiều rộng = chiều rộng bản thân. color=color ...
Làm cách nào để ghi đè một chức năng trong PHP?
5 năm trước bởi Ryan Jentzsch — xem nguồnchưa đọcTôi biết Trình gỡ lỗi PHP nâng cao nhưng tôi cần loại trình gỡ lỗi nàychức năng cho là chế nhạo và thử ...
Làm cách nào để tìm nạp hình ảnh từ cơ sở dữ liệu trong PHP và hiển thị trong Div?
Tiếp cận. Đảm bảo bạn đã cài đặt máy chủ XAMPP hoặc WAMP trên máy của mình. Trong hướng dẫn này, chúng tôi sẽ sử dụng máy chủ WAMP1. Tạo nên cơ sở ...
Diễu Hành Lễ Hội Las Palmas 2023
Ngày 3 tháng 3 là Drag Queen Gala, kỷ niệm 25 năm thành lập. Ngày hôm sau là Cuộc diễu hành vĩ đại và cuối cùng, vào Chủ nhật, ngày 5 tháng 2, Lễ hội Las Palmas ...
Cách hiển thị các thẻ trong trang WordPress
Tôi vừa mới làm việc trên một chủ đề WordPress cao cấp mới mà tôi sẽ phát hành vào tuần tới và khi tôi đang tạo mẫu trang sơ đồ trang web của mình, tôi ...
Php kết xuất pdf
Thực hiện chức năng xuất PDF danh sách Sản phẩm (pdf)Cài đặt thư viện xuất PDFcomposer require barryvdh/laravel-dompdfMô hình hoạt động của pdfBước 1. tạo route ...
Quên mật khẩu phpmyadmin WAMP
Tôi đã tự hỏi liệu ai đó có thể giúp tôi không, tôi đã tìm kiếm trực tuyến hàng giờ để thử mọi giải pháp có thểnhưng vẫn không gặp may khi thay đổi ...
Thêm Trình quản lý thẻ của Google vào WordPress mà không cần plugin
Khi nói đến việc quản lý trang web WordPress của bạn, Trình quản lý thẻ của Google (GTM) sẽ là một trong những công cụ bạn nên sử dụngTại sao? Hãy làm theo ...
600 Giờ bao nhiêu ngày
? 1 năm có bao nhiêu giờ, phút, giây? Thì không phải ai cũng có thể nắm rõ và trả lời chính xác. Vậy nên, tất cả sẽ được Legoland giải đáp chi tiết ngay ...
Hướng dẫn dùng pandas videos python
Tại sao nên học cách làm việc với Python Pandas Excel? Excel là một trong những công cụ dữ liệu phổ biến và được sử dụng rộng rãi nhất; khó mà tìm được ...
Bí mật PHP
Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi ...
Trăng tròn tháng 1 năm 2023 theo giờ Argentina
Năm mới bắt đầu với trăng khuyết, nhưng câu hỏi bắt đầu được đặt ra là khi nào trăng tròn vào năm 2023? Tuy nhiên, lịch âm còn có một mục đích cực ...
Python kiểm tra xem loại có phải là danh sách không
Python has a built-in function called type() that helps you find the class type of the variable given as input. For example, if the input is a string, you will get the output as , for the list, it ...
Câu lệnh nào sau đây không đúng đối với tuple trong Python
Danh sách và bộ dữ liệu được cho là loại dữ liệu hữu ích, linh hoạt nhất của Python. Bạn sẽ tìm thấy chúng trong hầu hết mọi chương trình Python thông ...
Làm thế nào để Python biết phần cuối của một chuỗi?
Tuy nhiên, có nhiều cách khác để lấy giá trị cuối cùng của as chuỗi trong python; . Dưới đây là một số kỹ thuật chỉ ra cách lấy ký tự cuối cùng và n ký ...
Cx_Oracle ssl Python
Giải pháp. Nếu bạn có python3 -m pip install oracledb --upgrade 2 được bao gồm trong chuỗi kết nối của mình, hãy đảm bảo rằng python3 -m pip install oracledb ...
90000 euro bằng bao nhiêu tiền việt nam
Để đối phó với hạn hán và xâm nhập mặn đang diễn ra tại nhiều vùng của Việt Nam từ cuối năm 2015, Liên minh châu Âu đang cung cấp 90.000 euro tài trợ ...
Tổng bình phương các chữ số trong C++
/* www.programming9.com */ #include main() { int n,i,sum; i=1,sum=0; printf(Enter Maximum Value(n):); scanf(%d,&n); while(i
Tốc độ gió ở Amritsar 13 tháng một 2023
Hướng dẫn thời tiết tháng 1 cho Ấn Độ (Amritsar) hiển thị thời tiết trung bình dài hạn được xử lý từ dữ liệu do CRU (Đại học East Anglia), Văn phòng ...