zoukankan      html  css  js  c++  java
  • python_popen

     从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值。
    subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.*

    一、subprocess.Popen
    subprocess模块定义了一个类: Popen
    class subprocess.Popen( args, 
          bufsize=0, 
          executable=None,
          stdin=None,
          stdout=None, 
          stderr=None, 
          preexec_fn=None, 
          close_fds=False, 
          shell=False, 
          cwd=None, 
          env=None, 
          universal_newlines=False, 
          startupinfo=None, 
          creationflags=0)

    各参数含义如下:

    args: 
    args参数。可以是一个字符串,可以是一个包含程序参数的列表。要执行的程序一般就是这个列表的第一项,或者是字符串本身。
    subprocess.Popen(["cat","test.txt"])
    subprocess.Popen("cat test.txt")
    这两个之中,后者将不会工作。因为如果是一个字符串的话,必须是程序的路径才可以。(考虑unix的api函数exec,接受的是字符串
    列表)
    但是下面的可以工作
    subprocess.Popen("cat test.txt", shell=True)
    这是因为它相当于
    subprocess.Popen(["/bin/sh", "-c", "cat test.txt"])
    在*nix下,当shell=False(默认)时,Popen使用os.execvp()来执行子程序。args一般要是一个【列表】。如果args是个字符串的
    话,会被当做是可执行文件的路径,这样就不能传入任何参数了。

    注意:
    shlex.split()可以被用于序列化复杂的命令参数,比如:
    >>> shlex.split('ls ps top grep pkill')
    ['ls', 'ps', 'top', 'grep', 'pkill']
    >>>import shlex, subprocess
    >>>command_line = raw_input()
    /bin/cat -input test.txt -output "diege.txt" -cmd "echo '$MONEY'" 
    >>>args = shlex.split(command_line)
    >>> print args
    ['/bin/cat', '-input', 'test.txt', '-output', 'diege.txt', '-cmd', "echo '$MONEY'"]
    >>>p=subprocess.Popen(args)
    可以看到,空格分隔的选项(如-input)和参数(如test.txt)会被分割为列表里独立的项,但引号里的或者转义过的空格不在此列
    。这也有点像大多数shell的行为。

    http://blog.csdn.net/g457499940/article/details/17068277

  • 相关阅读:
    CharacterEncodingFilter详解及源码解析
    SPI 串行Flash闪存W25Q128FV 的使用(STM32F407)_硬件篇
    STM32 TFT LCD
    什么叫状态机:按键消抖实例
    STM32 ADC单通道采集 (STM32F103C8T6 ADC1的0通道 )
    STM32 PWM输出 (STM32F103C8T6 TIM2_CH2 )
    STM32 多通道ADC连续采集之数据到内存 DMA传输
    STM32 DAM之串口通讯
    STM32定时器之PWM 4路输出 TIM3、TIM14
    STM32定时器 TIM14之PWM 可调脉宽输出 呼吸灯
  • 原文地址:https://www.cnblogs.com/huangxiaoying/p/5387883.html
Copyright © 2011-2022 走看看