1. ==popen2 模块==
  2.  
  3. ``popen2`` 模块允许你执行外部命令, 并通过流来分别访问它的 ``stdin`` ``stdout`` ( 可能还有 ``stderr`` ).
  4.  
  5. python 1.5.2 以及之前版本, 该模块只存在于 Unix 平台上. 2.0 后, Windows 下也实现了该函数.
  6. [Example 3-9 #eg-3-9] 展示了如何使用该模块来给字符串排序.
  7.  
  8. ====Example 3-9. 使用 popen2 模块对字符串排序Module to Sort Strings====[eg-3-9]
  9.  
  10. ```
  11. File: popen2-example-1.py
  12.  
  13. import popen2, string
  14.  
  15. fin, fout = popen2.popen2("sort")
  16.  
  17. fout.write("foo\n")
  18. fout.write("bar\n")
  19. fout.close()
  20.  
  21. print fin.readline(),
  22. print fin.readline(),
  23. fin.close()
  24.  
  25. *B*bar
  26. foo*b*
  27. ```
  28.  
  29. [Example 3-10 #eg-3-10] 展示了如何使用该模块控制应用程序 .
  30.  
  31. ====Example 3-10. 使用 popen2 模块控制 gnuchess====[eg-3-10]
  32.  
  33. ```
  34. File: popen2-example-2.py
  35.  
  36. import popen2
  37. import string
  38.  
  39. class Chess:
  40. "Interface class for chesstool-compatible programs"
  41.  
  42. def _ _init_ _(self, engine = "gnuchessc"):
  43. self.fin, self.fout = popen2.popen2(engine)
  44. s = self.fin.readline()
  45. if s != "Chess\n":
  46. raise IOError, "incompatible chess program"
  47.  
  48. def move(self, move):
  49. self.fout.write(move + "\n")
  50. self.fout.flush()
  51. my = self.fin.readline()
  52. if my == "Illegal move":
  53. raise ValueError, "illegal move"
  54. his = self.fin.readline()
  55. return string.split(his)[2]
  56.  
  57. def quit(self):
  58. self.fout.write("quit\n")
  59. self.fout.flush()
  60.  
  61. #
  62. # play a few moves
  63.  
  64. g = Chess()
  65.  
  66. print g.move("a2a4")
  67. print g.move("b2b3")
  68.  
  69. g.quit()
  70.  
  71. *B*b8c6
  72. e7e5*b*
  73. ```

  

python标准库介绍——36 popen2 模块详解的更多相关文章

  1. python标准库介绍——27 random 模块详解

    ==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...

  2. python标准库介绍——12 time 模块详解

    ==time 模块== ``time`` 模块提供了一些处理日期和一天内时间的函数. 它是建立在 C 运行时库的简单封装. 给定的日期和时间可以被表示为浮点型(从参考时间, 通常是 1970.1.1 ...

  3. python标准库介绍——10 sys 模块详解

    ==sys 模块== ``sys`` 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. === 处理命令行参数=== 在解释器启动后, ``argv`` 列表包含了传递给脚本的所有 ...

  4. python标准库介绍——30 code 模块详解

    ==code 模块== ``code`` 模块提供了一些用于模拟标准交互解释器行为的函数. ``compile_command`` 与内建 ``compile`` 函数行为相似, 但它会通过测试来保证 ...

  5. python标准库介绍——8 operator 模块详解

    ==operator 模块== ``operator`` 模块为 Python 提供了一个 "功能性" 的标准操作符接口. 当使用 ``map`` 以及 ``filter`` 一类 ...

  6. python标准库介绍——4 string模块详解

    ==string 模块== ``string`` 模块提供了一些用于处理字符串类型的函数, 如 [Example 1-51 #eg-1-51] 所示. ====Example 1-51. 使用 str ...

  7. python标准库介绍——33 thread 模块详解

    ?==thread 模块== (可选) ``thread`` 模块提为线程提供了一个低级 (low_level) 的接口, 如 [Example 3-6 #eg-3-6] 所示. 只有你在编译解释器时 ...

  8. python标准库介绍——23 UserString 模块详解

    ==UserString 模块== (2.0 新增) ``UserString`` 模块包含两个类, //UserString// 和 //MutableString// . 前者是对标准字符串类型的 ...

  9. python标准库介绍——22 UserList 模块详解

    ==UserList 模块== ``UserList`` 模块包含了一个可继承的列表类 (事实上是对内建列表类型的 Python 封装). 在 [Example 2-16 #eg-2-16] 中, / ...

随机推荐

  1. MDX Step by Step 读书笔记(九) - Working with Time 处理时间

    开篇介绍 这一章节主要用到的 MDX 函数: PeriodsToDate( [Level , [Member]] ) - 从指定级别的范围内,返回与指定成员同一级别,从第一个期间开始到指定成员结束的期 ...

  2. Linux和Windows中查看端口占用情况

    一.命令 netstat -lnt  或 netstat -tnlp 如: 二.较全 netstat -antulp 三.简单 ss -tanl  或 ss -tanlp 三.补充 Windows中使 ...

  3. C++ 第十二课 其它标准C函数

    abort() 停止程序执行 assert() 当表达式非真,停止程序执行 atexit() 当程序退出执行设定的程序 bsearch() 执行折半查找 exit() 停止程序执行 getenv() ...

  4. Python调用Windows外部程序

    在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32pro ...

  5. Dwr 框架简单实例

    Dwr 是一个 Java 开源库,帮助你实现Ajax网站. 它可以让你在浏览器中的Javascript代码调用Web服务器上的Java,就像在Java代码就在浏览器中一样. Dwr 主要包括两部分: ...

  6. java 如何使用多线程调用类的静态方法?

      1.情景展示 静态方法内部实现:将指定内容生成图片格式的二维码: 如何通过多线程实现? 2.分析 之所以采用多线程,是为了节省时间 3.解决方案 准备工作 logo文件 将生成的文件保存在F盘te ...

  7. django之创建第9个项目-管理后台admin

    django之创建第9个项目-管理后台admin配置 1.配置setting文件INSTALLED_APPS = (    'django.contrib.auth',    'django.cont ...

  8. spring cloud 加入配置中心后的 部分 配置文件优先级

    经过一个小时的实验,得出部分配置优先级如下: bootstrap.properties:位于jar包外的优先级最高 application.properties:配置中心的文件 > 命令行配置 ...

  9. ISO七层协议

    1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...

  10. JavaScript原生对象及扩展

    来源于 https://segmentfault.com/a/1190000002634958 内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始 ...