欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python調(diào)用系統(tǒng)命令的六種方法

 更新時間:2021年01月28日 09:11:35   作者:吾非同  
這篇文章主要介紹了詳解Python調(diào)用系統(tǒng)命令的六種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

作為膠水語言,Python可以很方便的執(zhí)行系統(tǒng)命令,Python3中常用的執(zhí)行操作系統(tǒng)命令有os.system()、os.popen()、subprocess.popen()、subprocess.call()、subprocess.run()、subprocess.getstatusoutput()六種方法。

os.system()

system函數(shù)可以將字符串轉(zhuǎn)化成命令在服務(wù)器上運行;其原理是每一條system函數(shù)執(zhí)行時,其會創(chuàng)建一個子進程在系統(tǒng)上執(zhí)行命令行,子進程的執(zhí)行結(jié)果無法影響主進程。

其返回值是指令運行后返回的狀態(tài)碼,0表示指令成功執(zhí)行,1表示失敗,256表示沒有返回結(jié)果,該方法適用于系統(tǒng)命令不需要輸出內(nèi)容的場景。

用法:

os.system("command")

示例:

import os
a=os.system("ping 192.168.1.101") #使用a接收返回值
print(a)

輸出:

正在 Ping 192.168.1.101 具有 32 字節(jié)的數(shù)據(jù):
來自 192.168.1.101 的回復(fù): 字節(jié)=32 時間=8ms TTL=127
來自 192.168.1.101 的回復(fù): 字節(jié)=32 時間=2ms TTL=127
來自 192.168.1.101 的回復(fù): 字節(jié)=32 時間=2ms TTL=127
來自 192.168.1.101 的回復(fù): 字節(jié)=32 時間=2ms TTL=127

192.168.1.101 的 Ping 統(tǒng)計信息:
    數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 2ms,最長 = 8ms,平均 = 3ms
0
Process finished with exit code 0

也可以在linux系統(tǒng)下運行

import os
os.system('cd /home && mkdir test') 執(zhí)行多條命令可以使用&&連接

os.popen(command,mode)

這種調(diào)用方式是通過管道的方式來實現(xiàn),這個函數(shù)的返回值是一個文件對象,可以讀或者寫(由mode決定,mode默認(rèn)是'r')。如果mode為'r',調(diào)用該對象的read()或readlines()方法可以讀取輸出內(nèi)容。

用法:os.popen(command[, mode[, bufsize]])

os.system(cmd)或os.popen(cmd),前者返回值是腳本的退出狀態(tài)碼,后者的返回值是腳本執(zhí)行過程中的輸出內(nèi)容。

import os
a=os.popen("ipconfig")
print(a.read())

輸出:
以太網(wǎng)適配器 以太網(wǎng):

   連接特定的 DNS 后綴 . . . . . . . :
   本地鏈接 IPv6 地址. . . . . . . . : fe81::b0ed:2b1b:7385:97d1%8
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.100
   子網(wǎng)掩碼  . . . . . . . . . . . . : 255.255.255.0
   默認(rèn)網(wǎng)關(guān). . . . . . . . . . . . . : 192.168.1.1

subprocess模塊

subprocess模塊是python從2.4版本開始引入的模塊,主要用來取代 一些舊的模塊方法,如os.system、os.spawn、os.popen、commands.*等。官方推薦使用該模塊執(zhí)行系統(tǒng)命令,subprocess模塊通過子進程來執(zhí)行外部指令,并通過input/output/error管道,獲取子進程的執(zhí)行的返回信息。

好處在于:運用對線程的控制和監(jiān)控,將返回的結(jié)果賦于一變量,便于程序的處理。

subprocess.Popen()

使用Popen可以創(chuàng)建進程,并與進程進行復(fù)雜的交互。

用法:child = subprocess.Popen(["cmd","arg1"...])

常用參數(shù)說明:

示例

from subprocess import PIPE, Popen

# 返回的是 Popen 實例對象
proc = Popen(
  'ipconfig', # cmd特定的查詢空間的命令
  stdin=None, # 標(biāo)準(zhǔn)輸入 鍵盤
  stdout=PIPE, # -1 標(biāo)準(zhǔn)輸出(演示器、終端) 保存到管道中以便進行操作
  stderr=PIPE, # 標(biāo)準(zhǔn)錯誤,保存到管道
  shell=True)

# print(proc.communicate()) # 標(biāo)準(zhǔn)輸出的字符串+標(biāo)準(zhǔn)錯誤的字符串
outinfo, errinfo = proc.communicate()
print(outinfo.decode('gbk')) # 外部程序(windows系統(tǒng))決定編碼格式
print(errinfo.decode('gbk'))

輸出:

以太網(wǎng)適配器 以太網(wǎng):

   連接特定的 DNS 后綴 . . . . . . . :
   本地鏈接 IPv6 地址. . . . . . . . : fe81::b0ed:2b1b:7385:97d1%8
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.100
   子網(wǎng)掩碼  . . . . . . . . . . . . : 255.255.255.0
   默認(rèn)網(wǎng)關(guān). . . . . . . . . . . . . : 192.168.1.1


Process finished with exit code 0

subprocess.call()

執(zhí)行指定的命令, 返回命令執(zhí)行狀態(tài), 功能類似os.system(cmd),參數(shù)shell默認(rèn)為False

用法:subprocess.call("command")

# linux獲取磁盤空間
import subprocess
subprocess.call(['df', '-h']) # 數(shù)組作為參數(shù)運行命令

輸出:
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        909M     0  909M   0% /dev
tmpfs           920M   32K  920M   1% /dev/shm
tmpfs           920M  472K  919M   1% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
/dev/vda1        50G  6.2G   41G  14% /
tmpfs           184M     0  184M   0% /run/user/0

subprocess.run()

python3.5中新增的函數(shù), 執(zhí)行指定的命令, 等待命令執(zhí)行完成后返回一個包含執(zhí)行結(jié)果的CompletedProcess類的實例。run默認(rèn)不會返回輸出,只返回命令和執(zhí)行狀態(tài)。

用法:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)

import subprocess
completed = subprocess.run(['ls', '-1'])
print('returncode:', completed.returncode)

subprocess.getstatusoutput()

執(zhí)行cmd命令,返回一個元組(命令執(zhí)行狀態(tài),命令執(zhí)行結(jié)果輸出)。

返回狀態(tài)碼和結(jié)果,0表示成功

import subprocess
ret, val = subprocess.getstatusoutput("ping www.baidu.com")
print(ret)
print(val)

輸出:
0

正在 Ping www.a.shifen.com [14.215.177.39] 具有 32 字節(jié)的數(shù)據(jù):
來自 14.215.177.39 的回復(fù): 字節(jié)=32 時間=29ms TTL=53
來自 14.215.177.39 的回復(fù): 字節(jié)=32 時間=29ms TTL=53
來自 14.215.177.39 的回復(fù): 字節(jié)=32 時間=29ms TTL=53
來自 14.215.177.39 的回復(fù): 字節(jié)=32 時間=30ms TTL=53

14.215.177.39 的 Ping 統(tǒng)計信息:
    數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 29ms,最長 = 30ms,平均 = 29ms

關(guān)于subprocess模塊的具體用法,大家可以查看文檔進行學(xué)習(xí)https://docs.python.org/3/library/subprocess.html。

到此這篇關(guān)于詳解Python調(diào)用系統(tǒng)命令的六種方法的文章就介紹到這了,更多相關(guān)Python調(diào)用系統(tǒng)命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳談Pandas中iloc和loc以及ix的區(qū)別

    詳談Pandas中iloc和loc以及ix的區(qū)別

    今天小編就為大家分享一篇詳談Pandas中iloc和loc以及ix的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python常見讀取語音的3種方法速度對比

    python常見讀取語音的3種方法速度對比

    python已經(jīng)支持WAV格式的書寫,下面這篇文章主要給大家介紹了關(guān)于python常見讀取語音的3種方法速度對比的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • python 根據(jù)正則表達式提取指定的內(nèi)容實例詳解

    python 根據(jù)正則表達式提取指定的內(nèi)容實例詳解

    這篇文章主要介紹了python 根據(jù)正則表達式提取指定的內(nèi)容實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 一文搞懂python異常處理、模塊與包

    一文搞懂python異常處理、模塊與包

    異常就是系統(tǒng)中的錯誤,程序是無法改變和處理的,文中有給大家提到異常處理機制,模塊與包的相關(guān)知識,通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • 基于Python編寫微信清理工具的示例代碼

    基于Python編寫微信清理工具的示例代碼

    這篇文章主要和大家分享一個用Python語言編寫的微信清理小工具的示例代碼,而且該工具不會刪除文字的聊天記錄,感興趣的可以了解一下
    2022-05-05
  • Python爬蟲之線程池的使用

    Python爬蟲之線程池的使用

    這篇文章主要介紹了Python爬蟲之線程池的使用,文中有非常詳細(xì)的的代碼示例,對正在學(xué)習(xí)python爬蟲的小伙伴們很有幫助喲。需要的朋友可以參考下
    2021-05-05
  • python實現(xiàn)一個簡單RPC框架的示例

    python實現(xiàn)一個簡單RPC框架的示例

    本文將會使用Python實現(xiàn)一個最簡單的RPC框架,不具有實用意義,但可以讓你清醒地理解RPC框架的幾個組成部分,只是比看Python自帶的xmlrpc清晰。
    2020-10-10
  • Numpy之random函數(shù)使用學(xué)習(xí)

    Numpy之random函數(shù)使用學(xué)習(xí)

    這篇文章主要介紹了Numpy之random使用學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Python第三方庫h5py_讀取mat文件并顯示值的方法

    Python第三方庫h5py_讀取mat文件并顯示值的方法

    今天小編就為大家分享一篇Python第三方庫h5py_讀取mat文件并顯示值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python?turtle庫畫圣誕樹詳細(xì)代碼教程

    python?turtle庫畫圣誕樹詳細(xì)代碼教程

    這篇文章主要介紹了python?turtle庫畫圣誕樹詳細(xì)代碼教程,圣誕節(jié)快到了,下面小編就來利用python?turtle庫畫一顆圣誕樹,?主要成分有圣誕樹的本體、大小蝴蝶結(jié)、星星、圣誕帽和襪子,需要的朋友可以參考一下
    2021-12-12

最新評論