• Day 4-9 subprocess模块


    我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system,除了os.system可以调用系统命令,,commands,popen2等也可以,比较乱,于是官方推出了subprocess,目地是提供统一的模块来实现对系统命令或脚本的调用.

     1 import subprocess
     2 
     3 a = subprocess.run(["ipconfig", "-3all"],stdout = subprocess.PIPE,stderr = subprocess.PIPE,check=True)   # 执行一条系统命令
     4 ##                                        stdou用来输出命令结果,stderr是错误提示.check如果出错,会报一个错误.
     5 #print(a.stderr)
     6 #b = subprocess.run("df -h |grep disk1",stdout = subprocess.PIPE,stderr = subprocess.PIPE,shell=True) # 如果有管道符要用这种方法
     7 
     8 ##标准写法
     9 
    10 # subprocess.run(['df','-h'],stderr=subprocess.PIPE,stdout=subprocess.PIPE,check=True)
    11 # #涉及到管道|的命令需要这样写
    12 #
    13 # subprocess.run('df -h|grep disk1',shell=True) #shell=True的意思是这条命令直接交给系统去执行,不需要python负责解析
    14 
    15 
    16 subprocess.call(["ipconfig", "-all"])
    17 
    18 #执行命令,返回命令执行状态 , 0 or 非0
    19 retcode = subprocess.call(["ls", "-l"])
    20 
    21 #执行命令,如果命令结果为0,就正常返回,否则抛异常
    22 subprocess.check_call(["ls", "-l"])
    23 0
    24 
    25 #接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结果
    26 subprocess.getstatusoutput('ls /bin/ls')
    27 (0, '/bin/ls')
    28 
    29 #接收字符串格式命令,并返回结果
    30 subprocess.getoutput('ls /bin/ls')
    31 '/bin/ls'
    32 
    33 #执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res
    34 res=subprocess.check_output(['ls','-l'])
    35 res
    36 # b'total 0
    drwxr-xr-x 12 alex staff 408 Nov 2 11:05 OldBoyCRM
    '
    a = subprocess.run(["sleep 10"],stdout = subprocess.PIPE,shell=True)
    a = subprocess.Popen(["sleep 10"],stdout = subprocess.PIPE,shell=True)
    print(a.poll())   # a.poll() 返回执行状态,0是正常.非零不正常
    a.wait()        # 等待命令就结束
    terminate()终止所启动的进程Terminate the process with SIGTERM
    
    kill() 杀死所启动的进程 Kill the process with SIGKILL
    
    communicate()与启动的进程交互,发送数据到stdin,并从stdout接收输出,然后等待任务结束
  • 相关阅读:
    仿新浪微博的ListView下拉更新功能
    Android如何防止apk程序被反编译
    Android横竖屏切换
    如何让Android字体自适应屏幕分辨率
    开工啦,从新浪搬到这儿来。。
    nginx + php +上传大文件
    mac + apache2 +memcached +yii
    ubuntu12.04 + git server+gitosis中央服务器的安装与配置
    virtual box ubuntu 下共享文件夹+全屏显示+修改uuid+cpu虚拟化技术
    ubunut+nginx + yii + url重写(url rewrite)+mac+apache
  • 原文地址:https://www.cnblogs.com/lovepy3/p/8780843.html
Copyright © 2020-2023  润新知