python標準庫介紹——36 popen2 模塊詳解
阿新 • • 發佈:2017-11-05
out tdi move gnu div error python popen pro
==popen2 模塊== ``popen2`` 模塊允許你執行外部命令, 並通過流來分別訪問它的 ``stdin`` 和 ``stdout`` ( 可能還有 ``stderr`` ). 在 python 1.5.2 以及之前版本, 該模塊只存在於 Unix 平臺上. 2.0 後, Windows 下也實現了該函數. [Example 3-9 #eg-3-9] 展示了如何使用該模塊來給字符串排序. ====Example 3-9. 使用 popen2 模塊對字符串排序Module to Sort Strings====[eg-3-9] ``` File: popen2-example-1.py import popen2, string fin, fout = popen2.popen2("sort") fout.write("foo\n") fout.write("bar\n") fout.close() print fin.readline(), print fin.readline(), fin.close() *B*bar foo*b* ``` [Example 3-10 #eg-3-10] 展示了如何使用該模塊控制應用程序 . ====Example 3-10. 使用 popen2 模塊控制 gnuchess====[eg-3-10] ``` File: popen2-example-2.py import popen2 import string class Chess: "Interface class for chesstool-compatible programs" def _ _init_ _(self, engine = "gnuchessc"): self.fin, self.fout = popen2.popen2(engine) s = self.fin.readline() if s != "Chess\n": raise IOError, "incompatible chess program" def move(self, move): self.fout.write(move + "\n") self.fout.flush() my = self.fin.readline() if my == "Illegal move": raise ValueError, "illegal move" his = self.fin.readline() return string.split(his)[2] def quit(self): self.fout.write("quit\n") self.fout.flush() # # play a few moves g = Chess() print g.move("a2a4") print g.move("b2b3") g.quit() *B*b8c6 e7e5*b* ```
python標準庫介紹——36 popen2 模塊詳解