Hệ thống os có trả lại bất cứ thứ gì Python không?

Thực thi các chương trình bên ngoài hoặc chạy lệnh hệ thống hoặc trình bao từ tập lệnh Python của chúng tôi có thể hữu ích trong nhiều tình huống. Thay vì điều hướng qua lại giữa thiết bị đầu cuối và IDE, chúng ta có thể chạy trực tiếp các lệnh từ mã Python của mình

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về mô-đun os và mô-đun quy trình con, đồng thời xem cách chạy các lệnh hệ thống bằng cách sử dụng chúng

Thực thi lệnh hệ thống bằng Python os Module

Mô-đun os cung cấp cho chúng ta hệ điều hành. system[], có thể được sử dụng để chạy trực tiếp các lệnh hệ thống. Chúng ta chỉ cần truyền lệnh dưới dạng chuỗi cho os. hệ thống[]

Tuy nhiên, đây không phải là cách được khuyến nghị để chạy các lệnh hệ thống. Chúng tôi phải xử lý nhiều thứ theo cách thủ công, chẳng hạn như thoát khỏi các ký tự shell và os. system[] thậm chí sẽ không trả lại đầu ra cho một biến đối tượng. Nó được sử dụng chủ yếu để chạy các lệnh đơn giản

hệ điều hành. system[] chỉ trả về mã thoát sau khi thực hiện lệnh hệ thống. Ví dụ: nếu lệnh được thực hiện thành công, thì mã thoát sẽ là 0

Nếu bạn đang sử dụng IDE, đầu ra của lệnh hệ thống sẽ được in ra bàn điều khiển vì nó được sử dụng làm luồng đầu ra

Xem xét ví dụ sau, nơi chúng tôi nhập mô-đun os lần đầu tiên vì nó chứa hàm system[]. Sau đó chúng tôi chạy một lệnh hệ thống đơn giản. Nếu chúng ta in đầu ra của nó, chúng ta sẽ thấy nó trả về 0, cho biết lệnh đã được thực hiện thành công

import os
# Executing dir command​ using system[] function
ext_code = os.system['dir']
print["The Exit Code is: ", ext_code]

Đầu ra của đoạn mã trên được hiển thị bên dưới

đầu ra

Volume trong ổ C là Windows
Số sê-ri tập là 9096-B75F

thư mục của C. \Users\Lenovo\PycharmProjects\untitled11

08/07/2021  09. 09 giờ sáng

        
08/07/2021  09. 09 giờ sáng
08/07/2021  09. 05 giờ sáng. ý tưởng
03/04/2021  06. 24 giờ chiều             2.320 asdadsa. py
03/04/2021  09. 41 giờ sáng             2.639 Netcom. py
04/03/2021  10. 34 giờ sáng             2.027 netcom2. py
08/07/2021  09. 09 giờ sáng             79 netcom3. py
03/04/2021  05. 26 giờ chiều             1.269 rfc. py
02/03/2021  09. 50 giờ sáng            venv
5 [Các] tệp          8.334 byte
4 Dir  790.547.144.704 byte miễn phí
Mã Thoát là. 0

Thực thi lệnh hệ thống bằng os. hàm popen[] trong Python

Mô-đun os cũng cung cấp một os. hàm popen[]. Thao tác này sẽ mở một đường dẫn tới dòng lệnh và chúng ta có thể truy cập đầu ra từ Python. Nó trả về một đối tượng mà chúng ta có thể sử dụng để xem đầu vào và đầu ra tiêu chuẩn của lệnh hệ thống

Khi luồng được tạo bằng phương thức này, chúng ta có thể chạy hàm read[] để lấy toàn bộ đầu ra dưới dạng chuỗi

import os
# Executing dir command using popen[] function
pipe = os.popen['dir']
print[pipe.read[]]

đầu ra

Volume trong ổ C là Windows
Số sê-ri tập là 9096-B75F

thư mục của C. \Users\Lenovo\PycharmProjects\untitled11

08/07/2021  09. 09 giờ sáng

        
08/07/2021  09. 09 giờ sáng
08/07/2021  09. 05 giờ sáng. ý tưởng
03/04/2021  06. 24 giờ chiều             2.320 asdadsa. py
03/04/2021  09. 41 giờ sáng             2.639 Netcom. py
04/03/2021  10. 34 giờ sáng             2.027 netcom2. py
08/07/2021  09. 09 giờ sáng             79 netcom3. py
03/04/2021  05. 26 giờ chiều             1.269 rfc. py
02/03/2021  09. 50 giờ sáng            venv
5 [Các] tệp          8.334 byte
4 Dir  790.547.144.704 byte miễn phí

Thực thi Lệnh hệ thống bằng cách sử dụng Mô-đun quy trình con trong Python

Mô-đun quy trình con cung cấp nhiều tùy chọn linh hoạt và bổ sung không có trong mô-đun hệ điều hành. Đây là mô-đun được khuyến nghị sử dụng khi bạn muốn chạy các chương trình hoặc lệnh từ Python

Mô-đun quy trình con có thể tạo hoặc sinh ra các quy trình mới và chúng tôi cũng có thể lấy thiết bị xuất chuẩn, thiết bị xuất chuẩn và thiết bị xuất chuẩn bằng mô-đun này

Lớp Popen của mô-đun quy trình con

  • Lớp quy trình con Popen có thể được coi là sự thay thế cho os. popen[], nhưng nó phức tạp hơn một chút để sử dụng

  • Chúng ta cần chuyển lệnh và các đối số của nó ở dạng danh sách tới hàm tạo của nó. Ví dụ: nếu chúng tôi muốn chạy lệnh ls -a -l để liệt kê các tệp và thư mục [bao gồm cả những tệp bị ẩn], chúng tôi sẽ chuyển ["ls", "-a", "-l"] cho

  • Chúng ta cũng có thể yêu cầu Python lấy đầu ra và các lỗi sau khi chạy lệnh tới một đối tượng hoặc chúng ta có thể ghi nó vào một tệp. Chúng ta cần đặt đối số thiết bị xuất chuẩn và thiết bị xuất chuẩn để làm như vậy

  • Vượt qua shell=True để chạy lệnh shell hoặc terminal và text=True để nhận đầu ra dưới dạng chuỗi thay vì byte

  • Có một phương thức giao tiếp [] của lớp Popen có thể được sử dụng để chuyển đầu vào cho lệnh hệ thống. Nó cũng cho phép chúng ta đọc đầu ra và các lỗi được trả về sau khi thực hiện lệnh

  • Một điều đáng chú ý khác về lớp Popen là nó sẽ không cài đặt toàn bộ chương trình Python và nó không đợi lệnh hệ thống thực thi xong. Chúng ta có thể kiểm tra xem lệnh còn đang thực thi hay không bằng cách sử dụng hàm poll[]. Nó trả về mã thoát nếu lệnh đã hoàn thành;

import subprocess
​
system_call = subprocess.Popen[["dir"], stdout=subprocess.PIPE, text=True, shell=True]
out, err = system_call.communicate[]
print[out]

Nó sẽ trả về cùng một đầu ra như hình trên

Lưu trữ kết quả đầu ra vào một tệp

Để ghi đầu ra vào một tệp, hãy chạy đoạn mã sau

import subprocess
with open["output.txt", 'w'] as file:
    system_call = subprocess.Popen[["dir"], stdout=file, text=True, shell=True]

Thực thi lệnh hệ thống bằng quy trình con. chạy chức năng

Chức năng run[] của mô-đun quy trình con cũng có thể được sử dụng để thực thi các lệnh hệ thống từ các chương trình Python của chúng tôi. Cũng giống như hàm tạo của lớp Popen, chúng ta cần truyền lệnh và các đối số của nó dưới dạng danh sách

  • Tham số thiết bị xuất chuẩn có thể được sử dụng để hướng đầu ra tới một đối tượng hoặc thậm chí tới một tệp

  • Đảm bảo sử dụng shell=True, khi chạy lệnh shell hoặc terminal

  • Đặt text=True sẽ trả về đầu vào và đầu ra tiêu chuẩn dưới dạng chuỗi thay vì byte

import subprocess
​# Execute command using run[] function
system_call = subprocess.run[["dir"], stdout=subprocess.PIPE, shell=True, text=True]
print[system_call.stdout]
print["The Exit Code is: ", system_call.returncode]

đầu ra

Volume trong ổ C là Windows
Số sê-ri tập là 9096-B75F

thư mục của C. \Users\Lenovo\PycharmProjects\untitled11

08/07/2021  09. 29 giờ sáng

        
08/07/2021  09. 29 giờ sáng
08/07/2021  09. 05 giờ sáng. ý tưởng
03/04/2021  06. 24 giờ chiều             2.320 asdadsa. py
03/04/2021  09. 41 giờ sáng             2.639 Netcom. py
04/03/2021  10. 34 giờ sáng             2.027 netcom2. py
08/07/2021  09. 29 giờ sáng               185 netcom3. py
03/04/2021  05. 26 giờ chiều             1.269 rfc. py
02/03/2021  09. 50 giờ sáng            venv
5 [Các] tệp          8.440 byte
4 Dir  790.454.452.224 byte miễn phí

Mã Thoát là. 0

Lưu trữ đầu ra vào một tệp

Để lưu trữ đầu ra của lệnh trong một tệp

import subprocess
​
with open["stdout.txt", 'w'] as file:
    system_call = subprocess.run[["dir"], stdout=file, shell=True, text=True]

Tóm lược

Chạy các lệnh hệ thống và thực thi các chương trình khác từ mã Python của chúng tôi có thể giúp chúng tôi rất nhiều với các tác vụ tự động hóa. Chúng ta có thể chạy chúng bằng cách sử dụng mô-đun os hoặc mô-đun quy trình con của Python. Mô-đun os không được dùng nữa và được thay thế bằng mô-đun quy trình con và mô-đun quy trình con là cách được khuyến nghị để chạy các lệnh hệ thống từ Python. Nó cung cấp rất nhiều tính năng và chức năng bổ sung khi so sánh với mô-đun os. hệ điều hành. Hàm system[] chỉ trả về mã thoát sau khi chạy lệnh, nhưng quy trình con trả về đối tượng và chúng ta có thể trích xuất đầu ra và lỗi từ đối tượng này

Hệ điều hành trả về bằng Python là gì?

os. system[] trả về giá trị thoát của quy trình [được mã hóa] . 0 có nghĩa là thành công. Trên Unix, giá trị trả về là trạng thái thoát của quy trình được mã hóa theo định dạng được chỉ định cho hàm wait[].

Hệ điều hành có trả lại mã thoát không?

os. system[] trả về một số đầu ra unix, không phải đầu ra lệnh. Vì vậy, nếu không có lỗi thì mã thoát được viết là 0 .

Làm cách nào để lấy đầu ra của lệnh os trong Python?

Trăn. Nhận đầu ra lệnh hệ thống .
Giải pháp mẫu. -
Mã Python. nhập quy trình con # danh sách tệp và thư mục return_text = quy trình con. check_output["dir", shell=True, universal_newlines=True] print["dir lệnh liệt kê tệp và thư mục"] print[returned_text].
Sơ đồ
Trình chỉnh sửa mã Python

Loại biến thứ hai được trả về từ os là gì?

Biến thứ hai, tên tệp , nhận giá trị của phần tử thứ hai của bộ được trả về từ os.

Chủ Đề