原标题:在Python中执行shell命令的6种方法,你都知道吗?

Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。今天我们就讲解其中的一个方面,用Python调用Shell命令。

用Python调用Shell命令有如下几种方式:

第一种:

os.system("The command you want").

这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。返回值是依赖于系统的,直接返回系统的调用返回值,所以windows和linux是不一样的。

第二种:

os.popen(command[,mode[,bufsize]])

先给大家看个例子

可以看出,popen方法通过p.read()获取终端输出,而且popen需要关闭close().当执行成功时,close()不返回任何值,失败时,close()返回系统返回值. 可见它获取返回值的方式和os.system不同。

第三种,使用commands模块,同样看一组例子。

根据你需要的不同,commands模块有三个方法可供选择。getstatusoutput, getoutput, getstatus。

但是,如上三个方法都不是Python推荐的方法,而且在Python3中其中两个已经消失。Python文档中目前全力推荐第四个方法,subprocess!

subprocess使用起来同样简单:

直接调用命令,返回值即是系统返回。shell=True表示命令最终在shell中运行。Python文档中出于安全考虑,不建议使用shell=True。建议使用Python库来代替shell命令,或使用pipe的一些功能做一些转义。官方的出发点是好的,不过真心麻烦了很多, so....

如果你更关注命令的终端输出,可以这样

同样很简单。

其实还有两种方法没有讲:os.spawn* 和 popen2.*。它们也可以完成同样的任务,不过小编平时没有用过,就不献丑啦~~返回搜狐,查看更多

责任编辑:

python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?相关推荐

  1. 在Oracle中执行动态SQL的几种方法------转载

    在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename  FROM scott.emp t WHERE t.de ...

  2. aix shell脚本 运行java_Linux中执行shell脚本的4种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  3. python可以实现哪些功能_Python中实现机器学习功能的四种方法介绍

    本篇文章给大家带来的内容是关于Python中实现机器学习功能的四种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在本文中,我们将介绍从数据集中选择要素的不同方法; 并使用S ...

  4. pdo_fetch执行mysql_PDO中执行SQL语句的三种方法

    在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...

  5. python os.popen.readlines异常_python中执行sed命令操作源文件时出现错误

    我想在python中执行一个sed命令,第一种方法直接指定文件时,可以正确输出结果,但是第二种我打开文件操作的时候就有问题,不知道什么原因,求高手解答?(1)>>>sedcmd=&q ...

  6. python调用scp上传目录_python执行scp命令拷贝文件及文件夹到远程主机的目录方法...

    系统环境centos7 python2.7 先在操作系统安装expect [root@V71 python]# vi 3s.py #!/usr/bin/python #coding:utf-8 imp ...

  7. java 执行外部命令 苹果_Java中执行外部命令

    在项目中执行一个linux的shell脚本,于是需要在java环境下执行外部命令如系统命令.linux命令的需求,本人小小研究了一下,又上网查了一些资料先整理如下. java执行外部命令主要依赖两个类 ...

  8. shell 获取命令执行结果_java高并发系列 第31天:获取线程执行结果,这6种方法你都知道?...

    这是java高并发系列第31篇. 环境:jdk1.8. java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有 ...

  9. python socket接收图像 数据_python中socket接受数据的三种方法 | 学步园

    原位置:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/408859 Description: An issue with socket ...

  10. linq调用mysql函数_mysql-在LINQ中执行FirstOrDefault的另一种方法

    我有一个成员资格表,用于记录用户是否为列表的成员.当对用户的成员资格进行更新时,会写入新记录,而以前的记录将保留原样,从而可以保留其成员资格的历史记录.要获取用户的会员资格状态,需要选择他们的最新条目 ...

最新文章

  1. fpga中的case语句
  2. 转换Word文档为PDF文件
  3. es6语法-箭头函数
  4. 初学大数据之如何选择机器学习算法
  5. mysql innodb隔离级别_浅析MySQL InnoDB的隔离级别
  6. 黑夜主权个人团队html源码 简单修改即可使用
  7. 小白文件管理器android,小白文件管理器手机版
  8. 房产电商新变数:阿里加码易居
  9. 腾讯游戏客户端一面准备
  10. 数据库高并发的解决方案
  11. git配置忽略某个文件提交
  12. C++核心准则讨论:如果一个类是资源句柄,则它需要一个构造函数,一个析构函数以及复制和/或移动操作
  13. 企业级小架构设计部署实现-docker变种(一)负载均衡网站
  14. Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
  15. lambda表达式——捕获
  16. 各大佬抨击ICML审稿太随意:LeCun三篇全没中,马毅说以后再也不投了
  17. 宝鲲财经外汇交易头寸有哪些不同的策略
  18. 拍照 识别 翻译 云脉慧眼
  19. Python对阿里云物联网MQTT设备接入端开发
  20. FG96-8CH 搭配Realsense D457 在Jetson AGX Orin/Xavier上的展示

热门文章

  1. confusion_matrix函数的使用
  2. 差速移动机器人之轨迹跟踪
  3. propertychange 属性说明
  4. IDEA Spark程序报错处理
  5. 分布式系统,本文引用“courage”的博客
  6. 最快删除大量文件的方法
  7. C# Base64编码/解码
  8. xshell 上传 下载文件
  9. 关于编码的一切【转载】
  10. C# .net中json字符串和对象之间的转化方法