subprocess

Posted yanranran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了subprocess相关的知识,希望对你有一定的参考价值。

模块subprocess

 1 import  subprocess
 2 
 3 ‘‘‘
 4 sh-3.2# ls /Users/egon/Desktop |grep txt$
 5 mysql.txt
 6 tt.txt
 7 事物.txt
 8 ‘‘‘
 9 
10 res1=subprocess.Popen(ls /Users/jieli/Desktop,shell=True,stdout=subprocess.PIPE)
11 res=subprocess.Popen(grep txt$,shell=True,stdin=res1.stdout,
12                  stdout=subprocess.PIPE)
13 
14 print(res.stdout.read().decode(utf-8))
15 
16 
17 #等同于上面,但是上面的优势在于,一个数据流可以和另外一个数据流交互,可以通过爬虫得到结果然后交给grep
18 res1=subprocess.Popen(ls /Users/jieli/Desktop |grep txt$,shell=True,stdout=subprocess.PIPE)
19 print(res1.stdout.read().decode(utf-8))
20 
21 
22 #windows下:
23 # dir | findstr test*
24 # dir | findstr txt$


25 import subprocess
26 res1=subprocess.Popen(rdir C:UsersAdministratorPycharmProjects	est函数备课,shell=True,stdout=subprocess.PIPE)
27 res=subprocess.Popen(findstr test*,shell=True,stdin=res1.stdout,
28                  stdout=subprocess.PIPE)
29 
30 print(res.stdout.read().decode(gbk)) #subprocess使用当前系统默认编码,得到结果为bytes类型,在windows下需要用gbk解码

#举例说明:
import subprocess

obj = subprocess.Popen(dir,
                 shell=True,
                 stdout=subprocess.PIPE,
                 stderr=subprocess.PIPE,
                       
                )

print(obj.stdout.read().decode(gbk))  # 正确命令
print(obj.stderr.read().decode(gbk))  # 错误命令

# shell: 命令解释器,相当于调用cmd 执行指定的命令。
# stdout:正确结果丢到管道中。
# stderr:错了丢到另一个管道中。
# windows操作系统的默认编码是gbk编码。

 

以上是关于subprocess的主要内容,如果未能解决你的问题,请参考以下文章

查找 subprocess.Popen python 的执行时间

Python多进程 - subprocess & multiprocess

从 async.subprocess.PIPE 读取

subprocess.Popen 和缓冲的进程输出

Python 之 subprocess模块

python subprocess.getoutput函数