如何用Python呼叫系統命令呢?常用方法!

老男孩IT教育機構發表於2021-01-29

  移動網際網路技術的快速發展,為各大行業都提供了發展機遇,在市場的影響之下,Python語言變得更加火爆,滲透到各大領域,現在很多開發工作都會使用到Python,不過進行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

  >>> print output.read()

  processor : 0

  vendor_id : AuthenticAMD

  cpu family : 21

  ... ...

  >>>

  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"]) # python2.x doesn‘t capture output

  >>> subprocess.run(["ls", "-l"]) # python3.x doesn‘t capture output

  >>> 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

  ... ...

  >>>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2754438/,如需轉載,請註明出處,否則將追究法律責任。

相關文章