subprocess模块的使用

1、调用本地shell脚本

[root@133systeminformation]#cattest.sh#!/bin/bashecho"helloworld!"In[1]:fromsubprocessimportPopen,PIPEIn[2]:p=Popen('./test.sh',shell=True)helloworld!


2、p1的输出作为p2的输入(PIPE即是管道)

In[15]:p1=Popen(['ls'],stdout=PIPE)In[16]:p2=Popen(['grep','py'],stdin=p1.stdout,stdout=PIPE)In[17]:result=p2.stdoutIn[18]:foriinresult:printi10_httpd.py1_md5.py1_walk.pyErrorExcept.pyhashlib2.pyisNum.pyprocess_check_call.pysubprocess.pysubprocess.pyctop10.pywalk1.pyyield1.pyyield2.py


p.communicate()方法相当于p.stdin.write()、p.stdin.close()和p.stdout.read()这3个方法


p.communicate返回的是两个元素的元祖

In[29]:p=Popen(['cat'],stdin=PIPE,stdout=PIPE)In[30]:p.communicate('abc')Out[30]:('abc',None)


In[19]:p=Popen(['wc'],stdin=PIPE,stdout=PIPE,stderr=PIPE)In[20]:p.terminate()In[21]:p.wait()Out[21]:-15In[22]:p.wait()Out[22]:-15In[23]:p.wait()Out[23]:-15In[24]:p.pidOut[24]:6241In[25]:p.returncodeOut[25]:-15In[43]:help(p1.wait)Helponmethodwaitinmodulesubprocess:wait(self)methodofsubprocess.PopeninstanceWaitforchildprocesstoterminate.Returnsreturncodeattribute.~In[44]:help(p1.returncode)HelponNoneTypeobject:classNoneType(object)|Methodsdefinedhere:||__hash__(...)|x.__hash__()<==>hash(x)||__repr__(...)|x.__repr__()<==>repr(x)(END)