python执行本地Linux命令(获取返回值):

如果仅从需求的层面看的话,os.system()和subprocess.run()的主要区别是,subprocess.run()能够返回更多的信息,包括执行的输出和执行的返回值,并且它对命令执行的控制更加灵活多变。而os.system()仅仅能知道返回成功还是失败。

方法1:os.system()

os.system方法是os模块最基础的方法,其它的方法一般在该方法基础上封装完成。
system函数可以将字符串转化成命令在服务器上运行·;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;

返回成功:

# 返回成功
import os
#os.system(cmd)的返回值是脚本的退出状态码,只会有0(成功),1,2
ret = os.system('which cat')
print(f'ret is [{ret}]')

返回失败:

# 返回失败
import os

#删掉一个不存在的文件
ret = os.system('rm -r aa')
#删掉不存在的文件会返回失败
print(f'ret is [{ret}]')

方法2:subprocess.run()

subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。
subprocess 模块首先推荐使用的是它的 run 方法,更高级的用法可以直接使用 Popen 接口。

运行成功返回0

# 运行行成功返回0
import subprocess

ret = subprocess.run(['cat', '/proc/version'])
print(f'ret is [{ret}]')
print('ret type is ' + str(type(ret)))
print(f'retuncode is [{ret.returncode}]')

执行结果信息在返回类里

# 命令的执行结果在一个类里
import subprocess
# shell参数的真正作用是交给系统的shell脚本来执行命令,比如复杂的linux命令,建议大家都直接默认shell=True就可以了。
ret = subprocess.run('cat /proc/version', shell=True)
print(f'ret is [{ret}]')

拿到命令执行的结果和返回值

# 拿到命令执行的结果和返回值
import subprocess
# shell参数的真正作用是交给系统的shell脚本来执行命令,比如复杂的linux命令,建议大家都直接默认shell=True就可以了。
ret = subprocess.run('cat /proc/version', shell=True, capture_output=True)
print(f'ret is [{ret}]')
print('stdout is ' + ret.stdout.decode('utf8'))

设置执行等待时间,避免自动化用例freeze

# 拿到命令执行的结果和返回值+设置超时时间(限定执行时间,如果超时,则报错,写法如下)
import subprocess
# shell参数的真正作用是交给系统的shell脚本来执行命令,比如复杂的linux命令,建议大家都直接默认shell=True就可以了。
ret = subprocess.run('ping www.baidu.com -c 5', shell=True, capture_output=True, timeout=1)
print(f'ret is [{ret}]')
print('stdout is ' + ret.stdout.decode('utf8'))
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值