Python 运维

Python中调用命令行的几种方法

2016-09-06  本文已影响0人  handyTOOL

本文使用的运行环境为 Python3

最直接的调用

import os
os.system("ls")

这样就可以调用系统的ls命令了,但是这样没法获取ls的输出。

通过 subprocess 调用

import subprocess
process = subprocess.Popen("ls", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

这里通过将stdout重定向到subprocess.PIPE上来取得ls命令的输出,如果想将stderr也重定向到subprocess.PIPE上,stderr=subprocess.STDOUT改成stderr=subprocess.PIPE即可。

如何通过 subprocess 读取命令行的输出

我们使用 subprocess 执行命令行后,可以通过process.stdout.read()来读取命令行输出,不过process.stdout.read()返回的是bytes,要想取得str,可以直接调用process.stdout.read().decode('utf-8')

最终的代码大概是这样的

import subprocess
process = subprocess.Popen("ls", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
command_output = process.stdout.read().decode('utf-8')
# 处理ls的返回值

注意

有些命令行是异步执行的不会马上返回输出,所以有时候我们要先等这个命令行执行完毕才能从stdout读出来数据。这个时候要加上process.wait()

import subprocess
process = subprocess.Popen("ls", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process.wait()
command_output = process.stdout.read().decode('utf-8')
# 处理ls的返回值
上一篇 下一篇

猜你喜欢

热点阅读