subprocess模块:

# subprocess用来替换多个旧模块和函数

os.system
os.spawn*
os.popen*
popen2.*
commands.*

subprocess简单使用使用:

m=subprocess.getstatusoutput("dir")
m=subprocess.Popen("sleep 10;echo 'hello'",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) #使用管道来取得正确输出,错误输出,m放的是综合结果 m.poll()#查看m执行的命令 是否完成,完成返回状态码,否则返回None,如果执行的命令时间比较长,用这个挺好。
m.wait()#等待命令执行成功。
m.terminate() #杀掉当前执行的进程。

subprocess参数:

可用参数:

  • args:shell命令,可以是字符串或者序列类型(如:list,元组)
  • bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲
  • stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
  • preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
  • close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。
  • 所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
  • shell:同上
  • cwd:用于设置子进程的当前目录
  • env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
  • universal_newlines:不同系统的换行符不同,True -> 同意使用 \n
  • startupinfo与createionflags只在windows下有效
  • 将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等

终端输入的命令分为两种:

  • 输入即可得到输出,如:ifconfig
  • 输入进行某环境,依赖再输入,如:python

交互式:

import subprocess

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
obj.stdin.write('print 1 \n ')
obj.stdin.write('print 2 \n ')
obj.stdin.write('print 3 \n ')
obj.stdin.write('print 4 \n ') out_error_list = obj.communicate(timeout=10)
print out_error_list

subprocess实现免密码sudo:

import subprocess

def mypass():
mypass = '' #or get the password from anywhere
return mypass echo = subprocess.Popen(['echo',mypass()],
stdout=subprocess.PIPE,
) sudo = subprocess.Popen(['sudo','-S','iptables','-L'],
stdin=echo.stdout,
stdout=subprocess.PIPE,
) end_of_pipe = sudo.stdout print "Password ok \n Iptables Chains %s" % end_of_pipe.read()

最新文章

  1. SSIS Design4: 处理外键
  2. haslayout
  3. BZOJ 1115: [POI2009]石子游戏Kam
  4. 【poj3233】 Matrix Power Series
  5. Sqlserver_视图
  6. HDU1437+模拟
  7. iis7下.Net框架版本设置
  8. ANDROID_SDK_HOME设置
  9. 浅谈Linux系统的启动流程
  10. 51驱动LCD12864
  11. 遗传算法(Genetic Algorithm, GA)及MATLAB实现
  12. Jenkins部署实战篇
  13. Android 文件模式
  14. ASP.NET MVC 获得 view 中的HTML并将其中的内容自动转换成繁体中文。
  15. 汇编与C语句
  16. unistd.h文件
  17. Postgresql HStore 插件试用小结
  18. Elasticsearch 删除索引下的所有数据
  19. iOS的内存分配
  20. POJ - 2478

热门文章

  1. Linux 常用命令十一 ps
  2. 洛谷P4315 月下“毛景树”(树剖+线段树)
  3. mariadb的安装与主从复制
  4. bzoj258 [USACO 2012 Jan Gold] Bovine Alliance【巧妙】
  5. iOS 集成银联支付(绕过文档的坑,快速集成)-转
  6. 221 Maximal Square 最大正方形
  7. Redis和SpringDataRedis
  8. Vue.js学习笔记--3.表单输入绑定
  9. iOS 时间和时间戳之间转化
  10. 学生管理系统之Java+Mysql