Python编程:subprocess执行命令行命令
2023-09-14 09:07:15 时间
函数 | 说明 |
---|---|
os.system(command) | 返回状态码,执行结果输出到屏幕 |
os.popen(command).read() | 返回执行结果,没有状态码 |
- | - |
subprocess.run() | Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例 |
subprocess.call() | 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd) |
subprocess.check_call() | Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(…, check=True) |
subprocess.check_output() | Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常 |
subprocess.getoutput(cmd) | 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd) |
subprocess.getstatusoutput(cmd) | 执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出) |
代码示例
import subprocess
import os
cmd = "pwd"
# 返回命令执行状态码,而将命令执行结果输出到屏幕
ret = os.system(cmd)
print("system ret:", ret)
"""
/Users/myproject/mydemo/demo
system ret: 0
"""
# 可以获取命令执行结果,但是无法获取命令执行状态码
ret = os.popen(cmd)
print("popen ret: ", ret.read())
"""
popen ret: /Users/myproject/mydemo/demo
"""
ret = subprocess.run(cmd)
print("run ret: ", ret.returncode)
# run ret: 0
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
p.wait()
print("Popen ret: ", p.stdout.read())
"""
Popen ret: b'/Users/myproject/mydemo/demo\n'
"""
exitcode, output = subprocess.getstatusoutput(cmd)
print("exitcode: ", exitcode)
print("output: ", output)
"""
exitcode: 0
output: /Users/myproject/mydemo/demo
"""
汇成一个函数
import subprocess
class CommandException(Exception):
pass
def run_cmd(command):
exitcode, output = subprocess.getstatusoutput(command)
if exitcode != 0:
raise CommandException(output)
return output
if __name__ == '__main__':
cmd = "pwd"
print("output: ", run_cmd(cmd))
# output: /Users/myproject/mydemo/demo
相关文章
- 【Python】socket 编程初探
- IDE Python
- python 微信企业号
- 为什么数据科学家们选择了Python语言?
- 实例解析Python设计模式编程之桥接模式的运用
- 【python】web开发
- 【python】TCP/IP编程
- Python编程系列---初始Python编程基础
- Python编程入门指南:从小白到大神
- 微电网两阶段鲁棒优化经济调度方法(Python代码实现)
- 【华为机试真题 Python实现】括号生成
- 【华为机试真题 Python实现】字符串筛选排序
- Python编程:socket模块
- Python编程:chardet模块检测byte字节编码
- Python编程:eval函数的使用
- Python编程:demjson解析不规范的json字符串
- Python编程:Flask扩展Flask-WTF和Flask-SQLAlchemy应用实例
- Python编程:通过交集并集计算文档相似度
- Python编程:sh模块执行shell命令
- Python编程:Flask或者Jinja2时间格式化
- Python编程:元类的简单使用
- Python 网络编程——socket
- python基础课程_学习笔记26:编程的乐趣
- python里给出一个列表,怎么样从列表里取出最小两项的索引值
- Python 高级编程之面向切面编程 AOP(二)
- 【Leetcode刷题Python】739. 每日温度
- Python代码游戏————星球大战