python 执行系统命令---suprocess模块

1.suproess模块。

可以执行系统命令,windows命令或者linux名 都可以。

os模块也可以执行系统命令。但是推荐使用suproess模块

 

2.具体用法:

import subprocess
# res=subprocess.Popen('dir D:\python_project',shell=True)  #逗号前面是要执行的命令(列出指定目录下的所有文件),后面的shell=True是执行命令的意思。
# print(res)  #这样打印的是拿到一个内存值,并且把结果输出到屏幕。

res=subprocess.Popen('dir D:\python_project',
                     shell=True,
                     stdout=subprocess.PIPE,      #PIPE是管道,也就是将正确输出放到一个管道中,管道中的数值只能取一次,取走了就没有了。
                     stderr=subprocess.PIPE)    #将错误输出丢到一个管道中,跟上边不是同一个管道。
print(res.stdout.read().decode('gbk'))  #从管道中将值读出来,但是读出的是bytes类型的,需要转码一下,windows需要转成gbk  linux转成utf-8
print(res.stderr.read().decode('gbk'))  #将错误从管道拿出,输出打印出来。

3.模拟一个windows命令

#dir file_path | findstr py$  #列出指定目录下的所有文件,过滤出以py结尾的文件
res1=subprocess.Popen(r'dir D:\python_project\day7\day7',
                     shell=True,
                     stdout=subprocess.PIPE,)

# stdin=res1.stout
res2=subprocess.Popen(r'findstr py$',
                     shell=True,
                     stdin=res1.stdout,   #将res1的正确输出当做这个命令的正确输入。
                     stdout=subprocess.PIPE,)


print(res2.stdout.read().decode('gbk'))  #获取res2的正确输出

 

posted @ 2017-08-20 15:22  嘟囔囔小孩  阅读(744)  评论(0编辑  收藏  举报