传参的方法:
%s
一个参数:
name = "1111"
subprocess.popen('ls -l > %s' %name, shell = True)
输出到1111文件中
多个参数:
name = "1111"
name2 = "/usr/bin"
subprocess.popen('ls -l %s > %s' %(name2,name), shell = True)
Popen不阻塞父进程
可以这样:
name = "1111"
name2 = "/usr/bin"
child = subprocess.popen('ls -l %s > %s' %(name2,name), shell = True)
child.wait()
等待子进程结束,再继续父进程
管道:
可以利用subprocess.PIPE将多个子进程的输入和输出连接在一起,构成管道(pipe)
child2 = subprocess.Popen('ls -l path',stdout=subprocess.PIPE,shell=True)
child3 = subprocess.Popen(['grep','.gz'],stdin=child1.stdout,stdout=subprocess.PIPE)
out = child3.communicate()
subprocess.PIPE实际上为文本流提供一个缓存区。child2的stdout将文本输出到缓存区,随后child3的stdin从该PIPE中将文本读取走。child3的输出文本也被存放在PIPE中,直到communicate()方法从PIPE中读取出PIPE中的文本
此外,
还有run()、call()方法
父进程等待子进程完成
os模块,也可调用外部shell命令,默认阻塞父进程
os.system()
版权声明:本文为weixin_43981644原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。