Hướng dẫn python run shell command save output to file - python run shell lệnh lưu đầu ra vào tệp

Tôi muốn lưu đầu ra của lệnh shell vào một textfile thông qua python. Đây là mã python thực tế, khá cơ bản của tôi:

Chỉnh sửa đây là kịch bản cuối cùng, cảm ơn bạn đã giúp đỡ :) here is the final script, thank you for your help :)

import subprocess

ip_adress_4 = 0    
pr = open("pointer_record.txt", "w")

while (ip_adress_4 < 255):
    ip_adress_4 = ip_adress_4 + 1
    ip_adress = '82.198.205.%d' % (ip_adress_4,)
    subprocess.Popen("host %s" % ip_adress, stdout=pr, shell=True)

Đã hỏi ngày 6 tháng 12 năm 2013 lúc 10:08Dec 6, 2013 at 10:08

Hướng dẫn python run shell command save output to file - python run shell lệnh lưu đầu ra vào tệp

Bojack Horsemanbojack HorsemanBoJack Horseman

4.1529 Huy hiệu vàng35 Huy hiệu bạc68 Huy hiệu Đồng9 gold badges35 silver badges68 bronze badges

1

Hãy thử một cái gì đó như thế này:

import subprocess
file_ = open("ouput.txt", "w")
subprocess.Popen("ls", stdout=file_)

Chỉnh sửa: Phù hợp với nhu cầu của bạn: Matching your needs

import subprocess

file_ = open("ouput.txt", "w")
subprocess.Popen(["host", ipAddress], stdout=file_)

Đã trả lời ngày 6 tháng 12 năm 2013 lúc 14:04Dec 6, 2013 at 14:04

Hướng dẫn python run shell command save output to file - python run shell lệnh lưu đầu ra vào tệp

Raydel Mirandaraydel MirandaRaydel Miranda

13.4K2 Huy hiệu vàng36 Huy hiệu bạc59 Huy hiệu đồng2 gold badges36 silver badges59 bronze badges

0

Sử dụng

import subprocess
file_ = open("ouput.txt", "w")
subprocess.Popen("ls", stdout=file_)
1 thay vì
import subprocess
file_ = open("ouput.txt", "w")
subprocess.Popen("ls", stdout=file_)
2 sẽ cung cấp cho bạn một chuỗi trở lại chứa đầu ra, sau đó bạn có thể viết ra tệp.

Đã trả lời ngày 6 tháng 12 năm 2013 lúc 10:10Dec 6, 2013 at 10:10

Oliver Matthewsoliver MatthewsOliver Matthews

7.1473 Huy hiệu vàng31 Huy hiệu bạc32 Huy hiệu Đồng3 gold badges31 silver badges32 bronze badges

2

Bạn đang ở đây: Mẹo về nhà/ Linux/ Làm thế nào để chạy lệnh shell từ Python và nhận đầu ra?Home / Linux Tips / How to Run a Shell Command from Python and Get The Output?

Trong Python, thường thì bạn có thể muốn thực thi lệnh Linux và lấy đầu ra của lệnh dưới dạng biến chuỗi. Có nhiều cách để thực hiện lệnh shell và nhận đầu ra bằng Python. Một cách ngây thơ để làm điều đó là thực thi lệnh Linux, lưu đầu ra trong tệp và phân tích tệp.

import os
cmd = 'wc -l my_text_file.txt > out_file.txt'
os.system(cmd)

Nhận đầu ra từ lệnh shell bằng cách sử dụng quy trình con

Một cách tốt hơn để có được đầu ra từ việc thực hiện lệnh Linux trong Python là sử dụng mô -đun Python. Dưới đây là một ví dụ về việc sử dụng quy trình phụ của người Viking để đếm số lượng dòng trong một tệp sử dụng lệnh Linux của WC WC -L.

Trước tiên chúng ta hãy nhập mô -đun phụ

# import subprocess library
>import subprocess

Khởi chạy lệnh shell mà chúng tôi muốn thực thi bằng hàm SubProcess.Popen. Các đối số cho lệnh này là lệnh shell dưới dạng danh sách và chỉ định đầu ra và lỗi.

>out = subprocess.Popen(['wc', '-l', 'my_text_file.txt'], 
           stdout=subprocess.PIPE, 
           stderr=subprocess.STDOUT)

Đầu ra từ Subprocess.Popen là đối tượng SubProcess.Popen. Và đối tượng này có số lượng các phương thức được liên kết với nó và chúng tôi sẽ sử dụng phương thức Communication () để có được đầu ra và lỗi tiêu chuẩn trong trường hợp là một tuple.

Ở đây, đầu ra tiêu chuẩn chứa kết quả từ lệnh WC -L và Stderr không chứa vì không có lỗi.

>stdout,stderr = out.communicate()
>print(stdout)
    3503 my_text_file.txt
>print(stderr)
None

Sau đó, chúng ta có thể phân tích stdout để có được kết quả từ lệnh shell trong Python, theo cách chúng ta muốn. Ví dụ: nếu chúng ta chỉ muốn số lượng dòng trong tệp, chúng ta sẽ phân chia stdout

>stdout.split()[0]
'3503'

Chạy các lệnh shell (ví dụ: bash) trong Python khá dễ dàng bằng cách sử dụng gói hệ điều hành. Trong bài viết này, tôi phác thảo hai cách để chạy các lệnh shell trong Python: sử dụng phương thức hệ thống và phương thức popen.

Bài viết này là một phần của loạt hai phần liên quan đến việc chạy các lệnh shell từ bên trong Python.

  • Phần 1: Thực hiện các lệnh shell với gói hệ điều hànhExecute shell commands with the os package
  • Phần 2: Thực hiện các lệnh shell với gói phụ

Giải pháp đơn giản nhất để chạy các lệnh shell thông qua Python chỉ đơn giản là bằng cách sử dụng phương thức hệ thống của gói hệ điều hành. Gói OS, cung cấp một cách di động để sử dụng chức năng phụ thuộc vào hệ điều hành. Phương thức hệ thống thực thi một chuỗi là một lệnh trong một Subshell, về cơ bản là một ví dụ độc lập của bộ xử lý lệnh của hệ điều hành của bạn. Đối với Windows, các lệnh sẽ được chạy bằng CMD.exe, cho Linux, đây sẽ là Bash, Mac sẽ sử dụng Bash hoặc Z Shell.

Mã sau đây sẽ mở một bảng con, chạy lệnh và trả lại mã thoát quá trình - 0 (không) nếu lệnh đã chạy thành công, các số khác có nghĩa là có gì đó không sai (xem Linux và Windows).0 (zero) if the command has run successfully, other numbers mean something has gone wrong (see Linux and Windows).

import os
os.system('echo "Hello World!"')

Thực hiện các lệnh shell và nhận đầu ra bằng gói hệ điều hành

Đôi khi, bạn không chỉ quan tâm đến việc chạy các lệnh shell, mà bạn còn muốn biết đầu ra in là gì. Gói OS cũng có một giải pháp cho việc này: phương pháp popen. Phương pháp này mở một đường ống vào lệnh, được sử dụng để chuyển đầu ra của nó sang biến Python.

Mã sau đây sẽ một lần nữa mở một vỏ bọc và chạy lệnh, nhưng thay vì trả lại mã thoát quá trình, nó sẽ trả về đầu ra lệnh. Nếu bạn muốn loại bỏ NextLine (\ n), bạn có thể sử dụng phương thức dải

output_stream = os.popen('echo "Hello World!"')
output_stream.read()

❗ Lưu ý như sau:

  • Nếu lệnh được truyền cho shell tạo ra lỗi, nó sẽ chỉ trả về hai trích dẫn đơn.
  • Nếu bạn muốn biết nếu một lệnh đã hoàn thành thành công, bạn có thể truy cập mã thoát quy trình bằng phương thức đóng. Như thế này:

import subprocess
file_ = open("ouput.txt", "w")
subprocess.Popen("ls", stdout=file_)
0

Phương pháp popen của gói hệ điều hành sử dụng mô -đun phụ. Vì vậy, thay vì sử dụng popen, bạn cũng có thể giao tiếp trực tiếp với mô -đun phụ. Chúng tôi thảo luận về điều này trong bài viết tiếp theo.

Nói cảm ơn, đặt câu hỏi hoặc đưa ra phản hồi

Các công nghệ được cập nhật, thay đổi cú pháp và thành thật mà nói, tôi cũng mắc lỗi. Nếu một cái gì đó không chính xác, không đầy đủ hoặc không hoạt động, hãy cho tôi biết trong các ý kiến ​​dưới đây và giúp hàng ngàn khách truy cập.

Làm cách nào để lưu đầu ra shell vào một tệp trong Python?

Sử dụng SubProcess.check_output thay vì popen sẽ cung cấp cho bạn một chuỗi trở lại chứa đầu ra, sau đó bạn có thể viết ra tệp. Popen cũng cho phép bạn có được đầu ra. Thậm chí, trực tiếp đến một tập tin bạn đã mở. check_output instead of Popen That will give you a string back containing the output, which you can then write out to the file. Popen also allow you get the output. Even, directly to a file you have opened.

Làm thế nào để bạn lưu đầu ra lệnh trong Python?

Cấm Python lưu đầu ra lệnh cho biến đổi mã Câu trả lời..
Nhập quá trình phụ như SP ..
đầu ra = sp.getOutput ('Whoami --Version').
In (đầu ra).

Làm thế nào để bạn thực hiện lệnh shell trong python và nhận đầu ra?

Chạy các lệnh shell: shell = thật đối số thực sự với Check_output () và giao tiếp () Bạn phải đợi cho đến khi quá trình hoàn thành, với Poll () bạn đang nhận được đầu ra khi nó đến.with poll() you're getting output as it comes.

Làm thế nào để bạn có được đầu ra của lệnh bash trong Python?

Sử dụng SubProcess.Popen () để nhận đầu ra từ một lệnh gọi phụ lệnh shell.Popen (lệnh, shell = false, stdout = none) với shell được đặt thành true và stdout được đặt thành quy trình con.Ống để chạy lệnh trong một quy trình mới và để truy cập vào đầu ra của quy trình con vỏ. Popen() to get output from a shell command Call subprocess. Popen(command, shell=False, stdout=None) with shell set to True and stdout set to subprocess. PIPE to run command in a new process and to access the output of the shell subprocess.