最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

作為膠水語言,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')。如果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
   默認網(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, # 標準輸入 鍵盤
  stdout=PIPE, # -1 標準輸出(演示器、終端) 保存到管道中以便進行操作
  stderr=PIPE, # 標準錯誤,保存到管道
  shell=True)

# print(proc.communicate()) # 標準輸出的字符串+標準錯誤的字符串
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
   默認網(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默認為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默認不會返回輸出,只返回命令和執(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é)習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)文章

  • Python列表刪除元素del、pop()和remove()的區(qū)別小結(jié)

    Python列表刪除元素del、pop()和remove()的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于Python列表刪除元素del、pop()和remove()的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用Python具有一定的參考學(xué)習價值,需要的朋友們下面來一起學(xué)習學(xué)習吧
    2019-09-09
  • 關(guān)于Python常用函數(shù)中NumPy的使用

    關(guān)于Python常用函數(shù)中NumPy的使用

    這篇文章主要介紹了關(guān)于Python常用函數(shù)中NumPy的使用,在Python中有很多常用的函數(shù),NumPy就是其中之一,那么NumPy該怎么使用,下面就一起來看看吧
    2023-03-03
  • python刪除列表中特定元素的幾種方法

    python刪除列表中特定元素的幾種方法

    這篇文章主要介紹了python刪除列表中特定元素的幾種方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價價值,需要的小伙伴可以參考一下
    2022-05-05
  • Pycharm社區(qū)版創(chuàng)建Flask項目的實現(xiàn)步驟

    Pycharm社區(qū)版創(chuàng)建Flask項目的實現(xiàn)步驟

    本文主要介紹了Pycharm社區(qū)版創(chuàng)建Flask項目,包括設(shè)置Python環(huán)境、安裝Flask庫以及創(chuàng)建基本的項目結(jié)構(gòu),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 解決python3 urllib 鏈接中有中文的問題

    解決python3 urllib 鏈接中有中文的問題

    今天小編就為大家分享一篇解決python3 urllib 鏈接中有中文的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python中NumPy的數(shù)組重塑

    Python中NumPy的數(shù)組重塑

    這篇文章主要介紹了Python中NumPy的數(shù)組重塑,Numpy是Python科學(xué)計算庫,用于快速處理任意維度的數(shù)組,NumPy使用c語言寫的,底部解除了GIL,其對數(shù)組的操作速度不在受python解釋器限制<BR>
    2023-07-07
  • python實現(xiàn)b站直播自動發(fā)送彈幕功能

    python實現(xiàn)b站直播自動發(fā)送彈幕功能

    這篇文章主要介紹了python如何實現(xiàn)b站直播自動發(fā)送彈幕,幫助大家更好的理解和學(xué)習使用python,感興趣的朋友可以了解下
    2021-02-02
  • 最新評論

    广水市| 志丹县| 永春县| 西安市| 黑河市| 锦屏县| 正蓝旗| 九龙县| 廊坊市| 丘北县| 奉新县| 天水市| 焦作市| 怀远县| 江达县| 儋州市| 永定县| 峨眉山市| 积石山| 伊金霍洛旗| 宁河县| 梁山县| 黔西| 阳原县| 临武县| 南江县| 寻乌县| 乐陵市| 兖州市| 罗甸县| 长垣县| 前郭尔| 温州市| 苏尼特右旗| 小金县| 青浦区| 甘肃省| 西贡区| 大足县| 鹿泉市| 晋中市|