运行linux命令并返回结果

参考:https://www.cnblogs.com/yyds/p/7288916.html

命令行指令的执行通常有两个我们比较关注的结果:

  1. 命令执行的状态码——表示命令执行是否成功
  2. 命令执行的输出结果——命令执行成功后的输出

一、os与commands模块

函数名描述
os.system(command)返回命令执行状态码,而将命令执行结果输出到屏幕
os.popen(command).read()可以获取命令执行结果,但是无法获取命令执行状态码
commands.getstatusoutput(command)返回一个元组(命令执行状态码, 命令执行结果)

说明:

  1. os.popen(command)函数得到的是一个文件对象,因此除了read()方法外还支持write()等方法,具体要根据command来定;
  2. commands模块只存在于Python 2.7中,且不支持windows平台,因此commands模块很少被使用。另外,commands模块实际上也是通过对os.popen()的封装来完成的。

示例:os.popen

import os

command = 'cat %s |grep -n "%s"' %(file_path, pn)
result = os.popen(command).read()
print(result)

总结

根据python版本选择对应的模块:

版本模块
Python 2.4 - Python 3.5subprocess.call()
Python 3.5及以上subprocess.run()
  • Python2.4版本引入了subprocess模块用来替换os.system()、os.popen()、os.spawn*()等函数以及commands模块;也就是说如果你使用的是Python 2.4及以上的版本就应该使用subprocess模块了。
  • 如果你的应用使用的Python 2.4以上,但是是Python 3.5以下的版本,Python官方给出的建议是使用subprocess.call()函数。Python 2.5中新增了一个subprocess.check_call()函数,Python 2.7中新增了一个subprocess.check_output()函数,这两个函数也可以按照需求进行使用。
  • 如果你的应用使用的是Python 3.5及以上的版本(目前应该还很少),Python官方给出的建议是尽量使用subprocess.run()函数。
  • 当subprocess.call()、subprocess.check_call()、subprocess.check_output()和subprocess.run()这些高级函数无法满足需求时,我们可以使用subprocess.Popen类来实现我们需要的复杂功能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值