当前位置: 首页 > article >正文

python执行命令的方式

常见方法

Python中常用的执行操作系统命令有os.system()、os.popen()、commands、subprocess.popen()、subprocess.call()、subprocess.run()、subprocess.getstatusoutput()等方法。

os.system方法

这个方法是直接调用标准C的system() 函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息。os.system()没有返回

os.system(cmd)的返回值。如果执行成功,那么会返回0,表示命令执行成功。否则,则是执行错误。

使用os.system返回值是脚本的退出状态码,该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码。

os.system()返回值为0        linux命令返回值也为0。

os.system()返回值为256,十六位二进制数示为:00000001,00000000,高八位转成十进制为 1        对应   linux命令返回值 1。

os.system()返回值为512,十六位二进制数示为:00000010,00000000,高八位转成十进制为 2        对应   linux命令返回值 2。

import os
result = os.system('whoami')
print(result)      # 0

os.popen方法

os.popen()方法不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息),是通过一个管道文件将结果返回。通过 os.popen() 返回的是 file read 的对象,调用该对象的read()或readlines()方法可以读取输出内容。

import os

result = os.popen('cat /etc/passwd')

print(result.read())

commands模块

import commands

status = commands.getstatus('cat /etc/passwd')
print(status)
output = commands.getoutput('cat /etc/passwd')
print(output)
(status, output) = commands.getstatusoutput('cat /etc/passwd')
print(status, output)

subprocess模块

Subprocess是一个功能强大的子进程管理模块,是替换os.system ,os.spawn* 等方法的一个模块。

当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

import subprocess

res = subprocess.Popen('cat /etc/passwd', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # 使用管道

# print res.stdout.read()  # 标准输出

for line in res.stdout.readlines():

    print line

res.stdout.close()         # 关闭

subprocess.Popen()

使用Popen可以创建进程,并与进程进行复杂的交互。

用法:child = subprocess.Popen(["cmd","arg1"...])

subprocess.call()

执行指定的命令, 返回命令执行状态, 功能类似os.system(cmd),参数shell默认为False

用法:subprocess.call("command")

subprocess.run()

python3.5中新增的函数, 执行指定的命令, 等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。run默认不会返回输出,只返回命令和执行状态。

用法:subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)

subprocess.getstatusoutput()

执行cmd命令,返回一个元组(命令执行状态,命令执行结果输出)。

返回状态码和结果,0表示成功

python执行系统命令

os.system:获取程序执行命令的返回值。

os.popen: 获取程序执行命令的输出结果。

commands:获取返回值和命令的输出结果。

os.system()没有返回

os.popen().read()   可以返回

参考博客:

Python调用系统命令的六种方法 - 知乎 (zhihu.com)

Python—执行系统命令的四种方法(os.system、os.popen、commands、subprocess) - 刘_love_田 - 博客园 (cnblogs.com)

python执行系统命令后获取返回值的几种方式_python2获取ps命令的输出-CSDN博客


http://www.kler.cn/a/159765.html

相关文章:

  • Linux——GPIO输入输出裸机实验
  • 【CVPR2024】2024年CVPR的3D 目标检测的综述(还在补充中)
  • 数字后端教程之Innovus report_property和get_property使用方法及应用案例
  • MoneyPrinterTurbo – 开源的AI短视频生成工具
  • 【数据结构】交换排序——冒泡排序 和 快速排序
  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • visionOS空间计算实战开发教程Day 11 标题动画
  • 记录 | linux静态库和动态库的理解
  • 3.4_1 java自制小工具 - pdf批量转图片
  • 数字化时代的保镖:实人认证API在身份验证中的角色
  • 【Redis】redis 高性能--线程模型以及epoll网络框架
  • 每日一题(LeetCode)----字符串--重复的子字符串
  • photoshop实现抠图的步骤
  • 《golang设计模式》第三部分·行为型模式-09-策略模式(Strategy)
  • Python学习路线 - Python语言基础入门 - 判断语句
  • 【langchain实战】开源项目-RasaGPT
  • 浏览器的favicon.icon 消失不见解决方案
  • 浏览器判断某一个 ip 是否与其在同一个局域网的几种方式
  • S120和PLC通讯设置
  • EDW国际数据管理最新趋势(二)|信息供应链与数据
  • 人类长寿新突破背后:“原知因”成为炙手可热新课题
  • heatmap.js热力图【vue3】
  • 【开题报告】基于SpringBoot的农场管理系统的设计与实现
  • 用OpenCV与MFC写一个图像格式转换及简单处理程序
  • Win11安装Docker
  • 【数据库】数据库多种锁模式,共享锁、排它锁,更新锁,增量锁,死锁消除与性能优化