import subprocess as sup  # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了

# 3.5版本之后官方推荐使用sup.run()

sup.run("ls -l", shell=True)  # 如果参数args是字符串, shell要设置为True

sup.run(("ls", "-l"))  # 推荐args为一个序列, list/tuple, 元组效率高

# 命令有返回值, 字符串类型(下同)

# sup.run(), call()等方法都是基于sup.Popen类的封装, run()如果不够用可以自己定义此类

pp = Popen(("ls", "-l"), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8")  # 不输出到控制台

p2 = subprocess.Popen(['grep', 'data'], stdin=pp.stdout, stdout=subprocess.PIPE)  # 可以将上一个命令的输出作为下一个命令的输入, 不需要|(管道符)

try:
  pp.wait(timeout=1)   #  等待1秒, 如果子进程没结束会报错(pp类是新开一个进程, 并在子进程中执行bash命令)

  pp.kill()  # 命令执行结束杀死子进程

  # 有些阻塞的命令不要设置超时时间更不要杀死, 比如: 命令行python, 但是这样的命令不用的时候, 还是要杀掉子进程

except:

  pass

print(pp.stdout.read())  # 输出命令查询结果
# 着重说一下 pp.communicate()  # 另一种输出结果的方式, 还可以再传入命令input参数, 也可以再设置超时时间timeout

out, err = pp.communicate()  # 如果是像python这样的阻塞命令, 可以用input="print(1)", 再执行python代码

print(out)  # 输出bash命令结果, 字符串类型

Python调用Linux bash命令的更多相关文章

  1. python调用linux的命令

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 ...

  2. Linux Bash命令关于程序调试详解

    转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...

  3. 【转】Linux(BASH)命令搜索机制

    原文网址:http://www.mike.org.cn/articles/linux-linux-bash-command-search-mechanism/ 转自:Eric Cheung: Linu ...

  4. 转: windows 10使用原生linux bash命令行

    转: https://www.zybuluo.com/pandait/note/337430 windows 10使用原生linux bash命令行 linux bash windows-10 第一时 ...

  5. PHP调用Linux的命令行执行文件压缩命令&&创建文件夹修改权限

    一开始,我和普通青年一样,想到用PHP内置的 ZipArchive纠结的是环境上没安装zip扩展,想采用用PHP调用Linux的命令行 ,执行压缩命令,感兴趣的朋友可以了解下,希望本文对你有所帮助 前 ...

  6. win10开启 linux Bash命令(win10内置了linux系统支持)

    win10开启 Ubuntu linux Bash命令(win10内置了linux系统支持) 第一步: 先在设置→更新和安全→针对开发人员中选择"开发人员模式",点击后会下载&qu ...

  7. Win10系统开启Linux Bash命令行

    Win10系统开启Linux Bash命令行 导读 在Build2016上微软为了拉拢开发者发了个大招,那就是Win10一周年更新集成原生Linux Bash命令行功能,这将允许开发者或用户在Wind ...

  8. 在Windows中运行Linux bash命令的几种方法

    如果你正在课程中正在学习 shell 脚本,那么需要使用 Linux 命令来练习命令和脚本. 你的学校实验室可能安装了 Linux,但是你自己没有安装了 Linux 的笔记本电脑,而是像其他人一样的 ...

  9. python代码执行bash命令 -- python3 cook book

    python代码执行bash命令相关 -- python3 cook book refer: https://python3-cookbook.readthedocs.io/zh_CN/latest/ ...

随机推荐

  1. springboot学习一:快速搭建springboot项目

    1.idea创建springboot工程 JDK选择1.8以上的版本 选择springboot的版本和添加配置项 新建一个HelloController,测试 访问 http://localhost: ...

  2. C 语言 保留的关键字

    auto,break,case,char,const,continue, default,do,double,else,enum,extern, float,for,goto,if,int,long, ...

  3. matlab-单位圆内射线数次反射

    转载自 https://zhidao.baidu.com/question/2268408219692883828.html 先贴代码和放图,然后我再做出一点解释(其实只是觉得这个思路好厉害,所以想保 ...

  4. 68.纯 CSS 创作一本色卡

    原文地址:https://segmentfault.com/a/1190000015456554 感想:复习下 transform-origin: 位置; HTML code: <div cla ...

  5. FPGA笔试必会知识点2—FPGA器件

    FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构, ...

  6. --- rk3399/3288 系列平台接mipi 的dts 数据 panel-init-sequence = [] 命令的整法

    https://blog.csdn.net/Shushan1/article/details/87858434 mipi 屏的数据手册 dts sample: &dsi { status = ...

  7. python之路:列表及元组之定义

      python开发之路:列表及元组之定义 列表是以后用处较大的一个数据类型,这种数据类型可以存储按组分类的信息.好了,我不多说,开始讲了! 好了,现在我有个情景,我要存东汉时期(韩国,秦国,……)所 ...

  8. 拾遗----javascript一些实用方法

    1. join() join() 方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. var ids = [];                 for(var i = 0 ...

  9. mysql null 相关bug

    select 1 = null 并不是预期的 False 而是 Null select 1 is null; 这样才会产生预期的 False select 1 not is null 这样写是 错误 ...

  10. 关于创建String对象过程的内存分配

    String是引用数据类型 但是String实际上java给我们提供的是一个类 注意:String 全类被fianl所修饰 所以 String 又叫 字符串常量 String 的值 一旦定义 不可以改 ...