zoukankan      html  css  js  c++  java
  • python subprocess

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    # 专门用于执行系统命令
    import subprocess

    #call():执行命令,并返回执行状态
    #ret = subprocess.call('ipconfig')

    # Popen():
    # 使用场景:1.将一个进程的执行输出作为另一个进程的输入
    # 2.先进入到某个输入环境,然后再执行一系列的指令
    # 参数:args:shell命令,可以是字符串,或者序列类型,如list,tuple。
    # bufsize:缓冲区大小,可不用关心
    # stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误
    # shell:为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令
    # cwd:用于设置子进程的当前目录
    # env:用于指定子进程的环境变量。如果env=None,则默认从父进程继承环境变量
    # universal_newlines:不同系统的的换行符不同,当该参数设定为true时,则表示使用 作为换行符

    # 案例1:在D:/python 下创建一个hakuna的文件夹
    #subprocess.Popen('mkdir hakuna',shell=True,cwd='D:/python')

    #案例2:

    # 这里在本机用3.6跑 会出错:TypeError: a bytes-like object is required, not 'str'
    # 所以用bytes类型
    sub = subprocess.Popen(["python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    pp = 'print(33) '.encode()
    qq = 'print(44) '.encode()
    sub.stdin.write(pp)
    sub.stdin.write(qq)
    sub.stdin.close()

    # out = sub.stdout.read().decode()
    # sub.stdout.close()
    # error = sub.stderr.read().decode()
    # sub.stderr.close()
    #
    # print(out)
    # print(error)

    ##上面获取输出的东西时,可以简化为communicate(),其内部仍然是调用以上代码
    out_error_list = sub.communicate() ##获取到的是一个tuple
    print(out_error_list[0].decode())
  • 相关阅读:
    css样式表中的样式覆盖顺序(转)
    1.2 明确你的 前端学习路线 和 方法
    1.1 开篇:重新理解前端
    3_1:语言基础:原始值 与 引用值
    2_5:语言基础:语句
    2_4:语言基础:操作符
    2_3:语言基础:数据类型
    2_2:语言基础:变量
    2_1:语言基础:语法
    1_2 HTML中的JavaScript
  • 原文地址:https://www.cnblogs.com/wuxinyan/p/8909469.html
Copyright © 2011-2022 走看看