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

本文使用的运行环境为 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的返回值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容