Python 处理管道的方法

发布时间:2019-08-29 07:42:47编辑:auto阅读(1537)

    Python 处理管道的方法

    Linux下的可以施展的最炫的魔法是什么?相信不同的人说法不同,但是如果没有管道,那么恐怕在绚丽魔法的都会失去魔力

    本文就介绍怎么使用Python来处理这些管道

    管道调用子程序

    我们想在程序中使用一个子程序,但是需要动态的传递参数(这里说的动态,是指根据上次子程序输入的结果来决定这次输入什么),怎么办呢,不用慌,有subprocess!

    下文我先介绍一个例子代码,以及他的输出结果!

    切换行号显示
       1 #!/usr/bin/python
       2 
       3 from  subprocess import *                        # Subprocess management,可以做很多子进程的文件,我们要引入这个文件
       4 p = Popen(["cat", "-n"], bufsize=1024,stdin=PIPE, 
       5                stdout=PIPE, close_fds=True)      # 打开程序第一个参数是一个列表(程序名称,参数)
       6                                                  #    第二个参数是缓冲区大小
       7                                                  #    stdin,stdout是设置是否打开这些管道,如果他的值是subprocess.PIPE的话,
       8                                                  #        就会打开,同stdin一样的还有stderr
       9                                                  #    close_fds设置为true(unix-only)所有的文件描述符除了(0,1,2)在子程序执行前都会关闭
      10 (fin, fout) =  (p.stdin, p.stdout)                                                 
      11 for i in range(10):                              # 你会懂的^_^ 
      12     fin.write("line" + str(i))
      13     fin.write('\n')
      14     fin.flush()
      15     print fout.readline(),
      16 
    

    他的输出结果是:

         1  line0
         2  line1
         3  line2
         4  line3
         5  line4
         6  line5
         7  line6
         8  line7
         9  line8
        10  line9

关键字