zoukankan      html  css  js  c++  java
  • Python之Subprocess模块

    PS:打开文件时候加b参数是代表以二进制方式打开,在Linux加不加都可以,在windows上面最好加b参数否则可能会出现问题

    使用system返回执行结果不赋值,使用popen返回了结果赋值给cmd_res  popen是被废弃的命令了

     以上执行shell命令的相关模块和函数功能均在subprocess模块中实现,并提供了丰富的功能

    import subprocess

     subprocess.call(["ls","-l"],shell=False)                     一个参数就是一个值需要用引号包括 最好使用这种方法 (有些处理不了比如管道|)

    subprocess.call("ls -l",shell=True)           shell=True使用shell原生实现,直接一个字符串 有些命令不是python原生的只能使用这种方法(这种也危险比如用户输入rm -rf)

    这个执行结果是无法保存的

     res=subprocess.call(["ls","-l"],shell=False)

    res

    0

    check_call如果执行状态码是0则返回0,否则抛异常,结果在屏幕显示

    check_output 执行命令,如果状态码是0,则返回执行结果,否则抛异常

    在python内部启动一个python进程

    t=subprocess.Popen(["python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

    PS:其实stdin stdout stderr不是必须加的 需要交换才加入标准输入,标准输出,标准错误 如果直接t = subprocess.Popen(["python"])

    会在本交互界面在生成一个交换界面会出现输入失败的情况,不需要交互就按上面只有输入.

    查看id

    在linux界面查看

    t.terminate()  杀掉子进程

    defunct代表进程变成了僵尸进程,主进程与子进程失去了联系

    资源没有得到释放

    t.wait() 释放资源

    help(t.wait)

    查看wait方法显示是在等待子进程终结

  • 相关阅读:
    正则表达式
    小弟新从csdn搬迁到博客园,欢迎大家关注
    做完牛腩新闻发布系统之后的收获(牛腩总结)
    ValidateRequest="false" 无效
    sql server小技巧-自动添加时间与主键自增长
    css初接触
    Spark的Rpct模块的学习
    插入排序
    选择排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/minseo/p/6860648.html
Copyright © 2011-2022 走看看