PS:打开文件时候加b参数是代表以二进制方式打开,在Linux加不加都可以,在windows上面最好加b参数否则可能会出现问题

使用system返回执行结果不赋值,使用popen返回了结果赋值给cmd_res  popen是被废弃的命令了

以上执行shell命令的相关模块和函数功能均在subprocess模块中实现,并提供了丰富的功能

import subprocess

subprocess.call(["ls","-l"],shell=False)                     一个参数就是一个值需要用引号包括 最好使用这种方法 (有些处理不了比如管道|)

subprocess.call("ls -l",shell=True)           shell=True使用shell原生实现,直接一个字符串 有些命令不是python原生的只能使用这种方法(这种也危险比如用户输入rm -rf)

这个执行结果是无法保存的

res=subprocess.call(["ls","-l"],shell=False)

res

0

check_call如果执行状态码是0则返回0,否则抛异常,结果在屏幕显示

check_output 执行命令,如果状态码是0,则返回执行结果,否则抛异常

在python内部启动一个python进程

t=subprocess.Popen(["python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

PS:其实stdin stdout stderr不是必须加的 需要交换才加入标准输入,标准输出,标准错误 如果直接t = subprocess.Popen(["python"])

会在本交互界面在生成一个交换界面会出现输入失败的情况,不需要交互就按上面只有输入.

查看id

在linux界面查看

t.terminate()  杀掉子进程

defunct代表进程变成了僵尸进程,主进程与子进程失去了联系

资源没有得到释放

t.wait() 释放资源

help(t.wait)

查看wait方法显示是在等待子进程终结

Python之Subprocess模块的更多相关文章

  1. Python中subprocess 模块 创建并运行一个进程

     python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex ...

  2. python的subprocess模块(写的不错留作查询)

    python的subprocess模块 subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*. ...

  3. python 利用python的subprocess模块执行外部命令,获取返回值

    有时执行dos命令需要保存返回值 需要导入库subprocess import subprocess p = subprocess.Popen('ping www.baidu.com', shell= ...

  4. python之subprocess模块详解--小白博客

    subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码.这个模 ...

  5. python中subprocess模块

    subprocess  模块 subprocess称之为子进程,进程是一个正在进行的程序 子进程是由另一个正在运行的程序启动的程序,例如QQ聊天点击一个链接,打开了浏览器,那么浏览器称之为QQ的子进程 ...

  6. python的subprocess模块执行shell命令

    subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...

  7. Python之subprocess模块、sys模块

    一.subprocess模块 # import os # os.system('tasklist') #类似cmd输入系统命令 ''' subprocess的目的就是启动一个新的进程并且与之通信. s ...

  8. python基础--subprocess模块

    可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*           --废弃 commands.* ...

  9. Python的subprocess模块(二)

    原文:http://blog.chinaunix.net/uid-26000296-id-4461522.html 一.subprocess 模块简介 subprocess最早是在2.4版本中引入的. ...

随机推荐

  1. office转换成pdf

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  2. Python 常用类库

    python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1 ...

  3. Tomcat------如何更改被IIS占用的80端口

    1.打开cmd,运行'netstat -ano'发现80端口被pid=4的进程占用 2.打开任务管理器,发现pid=4的进程,其实是system进程,其对应的进程描述是NT kernel & ...

  4. Linux+Redis实战教程_Linux上安装jdk,mysql,tomcat_安装jdk

    1. Linux上安装jdk,mysql,tomcat[重点] Windows 控制面板 添加/卸载程序 进行程序的安装.更新.卸载.查看 rpm命令:相当于windows的添加/卸载程序 进行程序的 ...

  5. linux下kill -9 pid 强制不能杀掉进程原因

    今天安装集群的时候,发现一个进程一直存在,kill -9 pid  也干不掉,就找找原因了. kill -9发送SIGKILL信号将其终止,但是以下两种情况不起作用:a.该进程处于"Zomb ...

  6. 查询mssql 密码

    select name,password from syslogins Select master.dbo.fn_varbintohexstr(password_hash) from sys.sql_ ...

  7. Git 学习笔记--git 查看某个文件的修改历史

    1. git log -p filename 查看文件的每一个详细的历史修改,如果没有-p选项,只显示提交记录,不显示文件内容修改,git log -p -3 filename 显示最近的3次提交. ...

  8. python3.4连接和读取oracle数据表

    想用python连接Oracle并查询数据表,就写了个Demo.参考了以下网址. Python学习之 cx_Oracle学习记录 一 http://my.oschina.net/bxxfighting ...

  9. gearman 简介

    附件  Gearman.doc 1:介绍gearman 1.1 简介 Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在 ...

  10. Elasticsearch学习之Java操作1

    1. Elasticsearch为Java用户提供了两种内置客户端 1.1 节点客户端(node client): 节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不 ...