最近在做那個測試框架的時候發現對python執行系統命令不太熟悉,所以想著總結下,下面這篇文章主要給大家介紹了關於在Python中執行系統命令的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
前言
Python經常被稱為“膠水語言”,因為它能夠輕易地操作其他程序,輕易地包裝使用其他語言編寫的函式庫。在Python/wxPython環境下,執行外部指令或說在Python程式中啟動另一個程式的方法。
本文將詳細介紹關於Python中如何執行系統指令的相關資料,下面話不多說了,來一起看看詳細的介紹吧。
(1) os.system()
#這個方法直接呼叫標準C的system()
函數,僅在一個子終端機執行系統指令,而不能取得執行回傳的資訊。
>>> import os >>> output = os.system('cat /proc/cpuinfo') processor : 0 vendor_id : AuthenticAMD cpu family : 21 ... ... >>> output # doesn't capture output 0
(2) os.popen()
這個方法執行命令並返回執行後的信息對象,是透過一個管道文件將結果返回。
>>> output = os.popen('cat /proc/cpuinfo') >>> output <open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540> >>> print output.read() processor : 0 vendor_id : AuthenticAMD cpu family : 21 ... ... >>><span style="font-size:14px;">
(3) commands模組
>>> import commands >>> (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') >>> print output processor : 0 vendor_id : AuthenticAMD cpu family : 21 ... ... >>> print status 0
注意1:在類別unix的系統下使用此方法傳回的回傳值(status)與腳本或指令執行之後的回傳值不等,這是因為呼叫了os.wait()的緣故,具體原因就得去了解下系統wait()的實作了。需要正確的回傳值(status),只需要對返回值進行右移8位元操作就可以了。
注意2:當執行指令的參數或傳回中包含了中文文字,那麼建議使用subprocess。
(4) subprocess模組
#該模組是一個功能強大的子程式管理模組,是替換os.system
, os.spawn*
等方法的一個模組。
>>> import subprocess >>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn't capture output >>> subprocess.run(["ls", "-l"]) <strong># python3.x</strong> doesn't capture output <subprocess.Popen object at 0x7ff52d7ee490> >>> total 68 drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads ... ... >>>
以上是詳解在Python中執行系統指令的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!