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. ubuntu python的升级与回滚

    转自:https://www.cnblogs.com/wmr95/p/7637077.html 正常情况下,你安装好ubuntu16.04版本之后,系统会自带 python2.7版本,如果需要下载新版 ...

  2. 分组ntile

    select order,ntile(3) over (order by order) from ss

  3. mvc后台上传

    public ActionResult AddEnclosure(HttpPostedFileBase Filedata) { if (Filedata == null || string.IsNul ...

  4. SQL SERVER 2019新功能

    1.错误代码行 BEGIN TRY    SELECT 1/0END TRYBEGIN CATCH    THROW END CATCH2.二级制截断列名值 chose语法

  5. DEDECMS 多站用一个站图片

    function replaceurl($newurl) { $newurl=str_replace('src="/uploads/allimg/','src="xxx.com/u ...

  6. vChart

    vue+echarts工具:    https://v-charts.js.org

  7. RocketMQ入门(生产者)_2

    从 RocketMQ环境搭建_1 我们已经建立了MQ的Server,接下来就是简单的生产和消费的过程. 1. rocketMQ的源码中有个示例代码example  ,我们从Apache官网中可以下载源 ...

  8. VC使用双缓冲制作绘图控件

    最近用VC做了一个画图的控件.控件在使用的时候遇到点问题.在控件里画了图之后切换到其他页面,等再切换回来的时候,发现控件里画的图都不见了.这是因为VC里面,当缩小.遮挡页面后客户区域就会失效,当再次显 ...

  9. 1.PHP连接mysql

      1.使用mysqli_connect()函数连接到MySQL数据库: mysqli_connect()函数的格式如下: mysqli_connect('MySQL服务器地址','用户名','用户密 ...

  10. Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图(转载)

    Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图 2017年04月05日 10:53:13 李学凯 阅读数:104997更多 所属专栏: Intellij Idea   ...