zoukankan      html  css  js  c++  java
  • subprocess模块的使用注意

    subprocess.Popen()函数

    语法格式:

      subprocess.Popen(arg,stdin=None,stdout=None,stderr=None,shell=False)

    1、主要来讲讲shell=True/False的区别

    我们一般常用的格式:subprocess.Popen("cat test.txt", shell=True)
    它相当于
    subprocess.Popen(["/bin/sh", "-c", "cat test.txt"])
    在unix下,当shell=False(默认)时,Popen使用os.execvp()来执行子程序。args一般要是一个【列表】。如果args是个字符串的
    话,会被当做是可执行文件的路径,这样就不能传入任何参数了。

    在unix下,当shell=True时,如果arg是个字符串,就使用shell来解释执行这个字符串。如果args是个列表,则第一项被视为命令,
    其余的都视为是给shell本身的参数。也就是说,等效于:
    subprocess.Popen(['/bin/sh', '-c', args[0], args[1], ...])

    2、返回状态码问题

    有两种方法:

    第一个:

    popen = subprocess.Popen('ls /usr/bin', stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
    
    print("out:",str(popen.stdout.read(),encoding='utf-8'))
    popen.poll()
    print(popen.returncode)

    popen.poll()函数表示检查子进程是否已结束,设置并返回状态值,用默认的即可。returncode负责返回真正的结果,如果执行成功,返回值为0,否则为其他任意状态码都表示执行失败。

    第二个:

    returnstatuscode函数:

    exitcode_curl,output_curl = subprocess.getstatusoutput(cmd_curl)
    print("code1:%d output1:%s" %(exitcode_curl,output_curl),file=doc)

    上面的两种方法都可以实现在Linux、windows平台执行命令,并且获取命令的状态返回值。 

  • 相关阅读:
    面向对象、构造函数的区别
    写一个function,清除字符串前后的空格。(兼容所有浏览器)
    两个DIV高度自适应方法(左右两个DIV高度一样)
    js数组去重
    input框处理删除小图标的功能
    查找显示高亮
    JSON.parse()和JSON.stringify()
    jquery封装
    怎么理解HTML语义化
    html5语义化标签
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/11095833.html
Copyright © 2011-2022 走看看