• 欢迎光临~

python之执行shell命令

开发技术 开发技术 2022-12-10 次浏览

python 执行shell命令,且执行完后将shell端的输出返回

subprocess

import subprocess

# 要执行的命令
command = "ls -lrt"

# 执行命令
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# 等待命令执行完成
process.wait()

# 获取命令的输出和错误信息
output = process.stdout.read()
error = process.stderr.read()

# 将输出和错误信息解码为字符串
output = output.decode(encoding="gbk")
error = error.decode(encoding="gbk")

# 返回命令的输出和错误信息
result = {"output": output, "error": error}
print(result)

​ 在这段代码中,我们使用 subprocess.run() 方法执行了 ls -l 命令,并将结果保存在 output 变量中。然后,我们调用了 stdout.decode() 方法将输出解码为字符串,并打印结果。
注意,在调用 subprocess.run() 时,我们传入了两个参数:shell=True 和 stdout=subprocess.PIPE。shell=True 表示要使用 shell 来执行命令,而 stdout=subprocess.PIPE 则表示将命令的标准输出保存在 output.stdout 中。

os.system()

import os

# 要执行的命令
command = "ls -l"

# 执行命令
output = os.system(command)

# 输出结果
print(output)

​ os.system() 方法执行了 ls -l 命令,并将结果保存在 output 变量中。然后,我们打印了 output 的值。
虽然使用 os.system() 方法可以执行 shell 命令,但它没有 subprocess.run() 方法那么强大。例如,os.system() 方法无法将命令的标准输出保存在变量中,因此无法对输出进行进一步的处理。
因此,如果您需要对命令的输出进行进一步的处理,建议使用 subprocess 模块。如果只需要执行命令,则可以使用 os.system() 方法。

sh

# 安装sh库
!pip install sh

from sh import ls

# 执行ls -l命令
output = ls("-l")

# 输出结果
print(output)

pexpect

# 安装pexpect库
!pip install pexpect

import pexpect

# 要执行的命令
command = "ls -l"

# 执行命令
output = pexpect.run(command)

# 输出结果
print(output)

​ 如果要从性能的角度考虑,推荐使用 subprocess 模块来执行 shell 命令。相比于其他方法,subprocess 模块能够更快地执行命令,并且可以将命令的标准输出保存在变量中,方便进一步的处理。

程序员灯塔
转载请注明原文链接:python之执行shell命令
喜欢 (0)