Python中subprocess模块用法实例详解

 更新时间:2015年05月20日 14:35:01   作者:网海水手  
这篇文章主要介绍了Python中subprocess模块用法,实例分析了subprocess模块的相关使用技巧,需要的朋友可以参考下

本文实例讲述了Python中subprocess模块用法。分享给大家供大家参考。具体如下:

执行命令:

>>> subprocess.call(["ls", "-l"])
0
>>> subprocess.call("exit 1", shell=True)
1

测试调用系统中cmd命令,显示命令执行的结果:

x=subprocess.check_output(["echo", "Hello World!"],shell=True)
print(x)
"Hello World!"

测试在python中显示文件内容:

y=subprocess.check_output(["type", "app2.cpp"],shell=True)
print(y) 
#include <iostream>   
using namespace std;  
...... 

查看ipconfig -all命令的输出,并将将输出保存到文件tmp.log中:

handle = open(r'd:\tmp.log','wt')
subprocess.Popen(['ipconfig','-all'], stdout=handle)

查看网络设置ipconfig -all,保存到变量中:

output = subprocess.Popen(['ipconfig','-all'], stdout=subprocess.PIPE,shell=True)
oc=output.communicate()#取出output中的字符串
#communicate() returns a tuple (stdoutdata, stderrdata).
print(oc[0]) #打印网络信息
Windows IP Configuration
    Host Name . . . . .

我们可以在Popen()建立子进程的时候改变标准输入、标准输出和标准错误,并可以利用subprocess.PIPE将多个子进程的输入和输出连接在一起,构成管道(pipe):

child1 = subprocess.Popen(["dir","/w"], stdout=subprocess.PIPE,shell=True)
child2 = subprocess.Popen(["wc"], stdin=child1.stdout,stdout=subprocess.PIPE,shell=True)
out = child2.communicate()
print(out)
 ('   9   24   298\n', None)

如果想频繁地和子线程通信,那么不能使用communicate();因为communicate通信一次之后即关闭了管道.这时可以试试下面的方法:

p= subprocess.Popen(["wc"], stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
p.stdin.write('your command')
p.stdin.flush()
#......do something
try:
  #......do something
  p.stdout.readline()
  #......do something
except:
  print('IOError')
#......do something more
p.stdin.write('your other command')
p.stdin.flush()
#......do something more

希望本文所述对大家的Python程序设计有所帮助。

相关文章

  • Python面向对象程序设计之类的定义与继承简单示例

    Python面向对象程序设计之类的定义与继承简单示例

    这篇文章主要介绍了Python面向对象程序设计之类的定义与继承,结合完整实例形式分析了Python面向对象程序设计中类的定义、调用、继承及相关操作注意事项,需要的朋友可以参考下
    2019-03-03
  • python 定时修改数据库的示例代码

    python 定时修改数据库的示例代码

    这篇文章主要介绍了python 定时修改数据库的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Python join()函数原理及使用方法

    Python join()函数原理及使用方法

    这篇文章主要介绍了Python join()函数原理及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python基础之变量基本用法与进阶详解

    Python基础之变量基本用法与进阶详解

    这篇文章主要介绍了Python基础之变量基本用法与进阶,结合实例形式详细分析了Python变量引用、可变和不可变类型、局部变量和全局变量等相关原理与使用技巧,需要的朋友可以参考下
    2020-01-01
  • matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    在撰写论文时常常会用到matplotlib来绘制三维散点图,下面这篇文章主要给大家介绍了关于matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python标准库中的sys你了解吗

    Python标准库中的sys你了解吗

    这篇文章主要为大家详细介绍了Python标准库中的sys,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Python中随机数生成random库实战

    Python中随机数生成random库实战

    本文介绍了Python的random库,介绍了生成随机整数、浮点数、序列随机抽样等基本功能,以及设置随机种子、控制概率分布等高级技巧,通过多个实用示例,感兴趣的可以了解一下
    2024-11-11
  • 使用Python构造hive insert语句说明

    使用Python构造hive insert语句说明

    这篇文章主要介绍了使用Python构造hive insert语句说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python解决多进程间访问效率低的方法总结

    Python解决多进程间访问效率低的方法总结

    这篇文章主要为大家详细介绍了当Python多进程间访问效率低时,应该如何解决?文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09
  • Python3 翻转二叉树的实现

    Python3 翻转二叉树的实现

    这篇文章主要介绍了Python3 翻转二叉树的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论