<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      python類庫31[進程subprocess]

       

      subprocess.Popen用來創(chuàng)建子進程。

       

      1)Popen啟動新的進程與父進程并行執(zhí)行,默認父進程不等待新進程結束。

      def TestPopen():
        
      import subprocess
        p
      =subprocess.Popen("dir",shell=True)
        
      for i in range(250) :
          
      print ("other things")

       

      2)p.wait函數(shù)使得父進程等待新創(chuàng)建的進程運行結束,然后再繼續(xù)父進程的其他任務。且此時可以在p.returncode中得到新進程的返回值。

      def TestWait():
        
      import subprocess
        
      import datetime
        
      print (datetime.datetime.now())
        p
      =subprocess.Popen("sleep 10",shell=True)
        p.wait()
        
      print (p.returncode)
        
      print (datetime.datetime.now())

       

      3) p.poll函數(shù)可以用來檢測新創(chuàng)建的進程是否結束。

      def TestPoll():
        
      import subprocess
        
      import datetime
        
      import time
        
      print (datetime.datetime.now())
        p
      =subprocess.Popen("sleep 10",shell=True)
        t 
      = 1
        
      while(t <= 5):
          time.sleep(
      1)
          p.poll()
          
      print (p.returncode)
          t
      +=1
        
      print (datetime.datetime.now())

       

      4) p.kill或p.terminate用來結束創(chuàng)建的新進程,在windows系統(tǒng)上相當于調用TerminateProcess(),在posix系統(tǒng)上相當于發(fā)送信號SIGTERM和SIGKILL。

      def TestKillAndTerminate():
          p
      =subprocess.Popen("notepad.exe")
          t 
      = 1
          
      while(t <= 5):
            time.sleep(
      1)
            t 
      +=1
          p.kill()
          
      #p.terminate()
          print ("new process was killed")

        

      5) p.communicate可以與新進程交互,但是必須要在popen構造時候將管道重定向。

      def TestCommunicate():
        
      import subprocess
        cmd 
      = "dir"
        p
      =subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        (stdoutdata, stderrdata) 
      = p.communicate()
        
        
      if p.returncode != 0:
              
      print (cmd + "error !")
        
      #defaultly the return stdoutdata is bytes, need convert to str and utf8
        for r in str(stdoutdata,encoding='utf8' ).split("\n"):
          
      print (r)
        
      print (p.returncode)


      def TestCommunicate2():
        
      import subprocess
        cmd 
      = "dir"
        
      #universal_newlines=True, it means by text way to open stdout and stderr
        p = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        curline 
      = p.stdout.readline()

        
      while(curline != ""):
              
      print (curline)
              curline 
      = p.stdout.readline()
        p.wait()
        
      print (p.returncode)

       

       

      6) call函數(shù)可以認為是對popen和wait的分裝,直接對call函數(shù)傳入要執(zhí)行的命令行,將命令行的退出code返回。

      def TestCall():
        retcode 
      = subprocess.call("c:\\test.bat")
        
      print (retcode)

       

      7)subprocess.getoutput 和 subprocess.getstatusoutput ,基本上等價于subprocess.call函數(shù),但是可以返回output,或者同時返回退出code和output。

      但是可惜的是好像不能在windows平臺使用,在windows上有如下錯誤:'{' is not recognized as an internal or external command, operable program or batch file. 

      def TestGetOutput():
        outp 
      = subprocess.getoutput("ls -la")
        
      print (outp)

      def TestGetStatusOutput():
        (status, outp) 
      = subprocess.getstatusoutput('ls -la')
        
      print (status)
        
      print (outp)

       

      8)總結

      popen的參數(shù),第一個為字符串(或者也可以為多個非命名的參數(shù)),表示你要執(zhí)行的命令和命令的參數(shù);后面的均為命名參數(shù);shell=True,表示你前面的傳入的命令將在shell下執(zhí)行,如果你的命令是個可執(zhí)行文件或bat,不需要指定此參數(shù);stdout=subprocess.PIPE用來將新進程的輸出重定向,stderr=subprocess.STDOUT將新進程的錯誤輸出重定向到stdout,stdin=subprocess.PIPE用來將新進程的輸入重定向;universal_newlines=True表示以text的方式打開stdout和stderr。 

       

      其他的不推薦使用的模塊:

      os.system
      os.spawn*
      os.popen*
      popen2.*
      commands.*

       

      參考:

      http://www.liuzhongshu.com/code/subprocess-detail.html

      http://www.liuzhongshu.com/code/python-vs-bat.html

      posted @ 2010-12-31 15:53  iTech  閱讀(6852)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 国产精品亚洲片夜色在线| 国产精品 第一页第二页| 国内精品久久人妻无码网站| 桂林市| 久久精品久久黄色片看看| 久久香蕉国产线看观看怡红院妓院| 城固县| 婷婷丁香五月亚洲中文字幕| 秋霞AV鲁丝片一区二区| 69天堂人成无码免费视频| 午夜精品久久久久久久爽| 亚洲高清国产拍精品熟女| 久久久久国产精品熟女影院| 亚洲一区二区三区十八禁| 日韩大片高清播放器| 日韩精品亚洲aⅴ在线影院| 国产成人无码免费视频在线| 国产精品久久国产三级国不卡顿| 99久久婷婷国产综合精品青草漫画 | 四虎永久精品在线视频| 91久久亚洲综合精品成人 | 老鸭窝| 亚洲一区成人在线视频| 国产精品自拍三级在线观看 | 久久影院午夜伦手机不四虎卡| 国产破外女出血视频| 欧美私人情侣网站| 久久精品人人看人人爽| 久久一区二区中文字幕| 化州市| 国产免费高清69式视频在线观看| 婷婷国产亚洲性色av网站| 国产精品视频全国免费观看| 四川丰满少妇无套内谢| 国产精品视频中文字幕| 欧美嫩交一区二区三区| 精品超清无码视频在线观看| 国产精品亚洲欧美大片在线看 | 一个色综合色综合色综合| 亚洲免费人成网站在线观看| 日韩精品中文字幕人妻|