参考: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 oscommand = 'cat %s |grep -n "%s"' %(file_path, pn)
result = os.popen(command).read()
print(result)

总结

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

版本 模块
Python 2.4 - Python 3.5 subprocess.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类来实现我们需要的复杂功能。

运行linux命令并返回结果相关推荐

  1. 如何在后台运行 Linux 命令

    Linux 命令是使用终端与系统交互的好方法.但是,有时可能需要一段时间才能完成手头的任务.这迫使用户等待相当长的时间或完全生成一个新的 shell. 幸运的是,您可以通过一些简单的方法在后台运行 L ...

  2. Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义以及linux命令执行返回值代表意义

    Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义以及linux命令执行返回值意义 (1) Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 1.1.简要说明 ps: ...

  3. linux命令:返回上一次目录

    返回上一次目录 有时候千辛万苦进入了一个很深层的目录,一不小心输入了cd并回车,有什么办法快速回到刚才所在的目录呢?对于bash来说,只需要很管理的一个命令: cd - 该命令等同于cd $OLDPW ...

  4. Android在Shell环境下运行Linux命令

    Android的底层其实linux,所以可以在android shell下运行linux命令,尤其是经过root处理的Android系统,基本上可以通过调用linux命令完全操作手机,下面的RootC ...

  5. linux 命令 抛后台,在后台运行Linux命令的方法

    通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束.这被称为在前台运行命令,或者前台进程.当一个进程在前台运行时,它占用了你的 shell,并且你可以通过输入 ...

  6. linux钟java运行命令,在java中运行linux命令

    我想在java中运行"ls"命令,我的代码是- 注意: - 我正在使用WINDOWS.在java中运行linux命令 import java.io.IOException; pub ...

  7. java运行linux命令程序_Java程序执行Linux命令

    java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: ProcessBuilder.start() 和 Runtime.exec 方法创建一个 ...

  8. win7下运行linux命令,win7系统32位旗舰版iso运行linux shell脚本的操作办法

    win7旗舰版是用户量最大的一款操作系统:有不少人在使用中都遇见了win7系统运行linux shell脚本的问题,对于电脑不太熟悉的朋友面对win7系统运行linux shell脚本便无计可施,其实 ...

  9. 手机怎样运行linux命令行,不仅是命令行 Windows 10 也可以运行 Linux 的图形界面程序了...

    微软在 Build 2016 上宣布这个新闻后,很快就在其发布的 Insider 预览版 14316 上将这个功能展示给了迫不及待的粉丝们.根据微软当前的技术说明,目前除了部分命令行程序不能运行之外, ...

最新文章

  1. arraylist切割_JAVA List和Map切割工具详解
  2. 2013-12-7 在超市给思杨买东西-思杨踢球
  3. leetcode 101. 对称二叉树 递归解法 c语言
  4. 全球及中国碳化硅 (SiC) 肖特基二极管行业竞争潜力与供应规划研究报告2022版
  5. jenkins+Docker+springcloud微服务持续集成
  6. 推荐系统可利用的特征
  7. [zz] 使用ssh公钥密钥自动登陆linux服务器
  8. 计算并输出1000以内的所有“完数”之和
  9. kafka监听topic消费_Kafka消费者-从Kafka读取数据
  10. 使用实时摄像头预览的iOS对象检测(六)
  11. Debian中安装VMware-tools
  12. ftp上传乱码_ftp同步图片到本地文件夹,ftp同步图片到本地文件夹的实现步骤
  13. 柯马机器人示教器编程_柯马机器人示教器C5G-TP5WC CR17910085全新原装进口现货销售...
  14. 上传文件中文乱码问题修复
  15. 计算机网络冲突窗口,计算机网络基础试题及答案
  16. Linux使用Wget实现整站下载
  17. 推荐一个不错的在线制图网站---ProcessOn
  18. JavaEE简易聊天室(Netbeans:Servlet+Cookie+Session)
  19. 大数据对人们生活的积极影响_大数据对生活带来的影响
  20. 某精英枪战游戏辅助脚本加密破解

热门文章

  1. Ubuntu搭建DTN2仿真平台(详细过程记录)
  2. 机器学习初学者_面向初学者的5个最佳机器学习项目
  3. 【转载】【缺陷预防技术】自动错误预防(AEP)
  4. L2TP LAC initial 配置与安全策略
  5. python文章抄袭检测_怎样用Python检测抄袭行为?广大中小学生们的美梦就此结束...
  6. python蝴蝶代码_ProE常用曲線方程:Python Matplotlib 版本代碼(蝴蝶曲線)
  7. 递归思想解决下楼梯问题
  8. 【OPENGLWEBGL】将OpenGL里的gluProject和gluUnProject函数web化
  9. 谷歌Chrome浏览器开启多线程下载
  10. 美术资源标准(纹理篇)