subprocess in python3.5


subprocess 

該子模塊允許你創建新的流程,連接到它們的輸入/輸出/錯誤管道,並獲取他們的返回值。該模塊打算替換多個舊的模塊和功能: os.system   和   os.spawn *
使用subprocess時建議使用run()函數去處理所有它可以處理的情況,因為高級用法可以直接使用 底層 POPEN 接口
run()函數是Python 3.5中新添加的。
使用方法:
subprocess. run ( args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False )
args     該參數用於啟動進程。這可能是一個列表或一個字符串。

returncode   該參數表示 子進程的退出狀態。
通常情況下,0作為退出狀態表明它成功運行。
負值-N表明 子進程 被信號N終止(僅POSIX)。

stdout    該參數表示 標准輸出
從子過程中捕獲標准輸出。一個字節序列,或字符串 ()如果運行一個字符串被稱為與universal_newlines = TRUE。無如果stdout沒有抓獲。

        如果您運行進程與標准錯誤= subprocess.STDOUT,輸出和錯誤將在此屬性相結合,和stderr將是無。

    標准錯誤

        從子過程中捕獲標准錯誤。一個字節序列,或()如果運行一個字符串被稱為與universal_newlines = TRUE。無標准錯誤,如果沒有抓獲。

    check_returncode()

        如果返回碼不為零,養CalledProcessError。


先看個例子:
>>> import subprocess
>>> subprocess.run(["ls"])
run_server.py    # ls命令返回的結果
CompletedProcess(args=['ls'], returncode=0)  # run函數返回的結果
>>> subprocess.run(["ls", "-l"])  # 這個和上面的類似
總用量 4
-rw-r--r-- 1 root root 266 9月  22 14:35 run_server.py
CompletedProcess(args=['ls', '-l'], returncode=0)

>>> subprocess.run(["ls"],stdout=subprocess.PIPE)  # 加上 stdout參數之后,系統命令返回的結果就不會輸出了
CompletedProcess(args=['ls'], returncode=0, stdout=b'run_server.py\n')

>>> a = subprocess.run(["ls"],stdout=subprocess.PIPE)  
>>> print(a)
CompletedProcess(args=['ls'], returncode=0, stdout=b'run_server.py\n')
>>> print(a.stdout,a.args,a.returncode)  # 可以對返回值進行操作
b'run_server.py\n' ['ls'] 0







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM