python3.x Day5 subprocess模块!!
2024-10-20 03:19:22
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()
最新文章
- SSIS Design4: 处理外键
- haslayout
- BZOJ 1115: [POI2009]石子游戏Kam
- 【poj3233】 Matrix Power Series
- Sqlserver_视图
- HDU1437+模拟
- iis7下.Net框架版本设置
- ANDROID_SDK_HOME设置
- 浅谈Linux系统的启动流程
- 51驱动LCD12864
- 遗传算法(Genetic Algorithm, GA)及MATLAB实现
- Jenkins部署实战篇
- Android 文件模式
- ASP.NET MVC 获得 view 中的HTML并将其中的内容自动转换成繁体中文。
- 汇编与C语句
- unistd.h文件
- Postgresql HStore 插件试用小结
- Elasticsearch 删除索引下的所有数据
- iOS的内存分配
- POJ - 2478