成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python模塊--subprocess

subprocess模塊                                                                                                                                      

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、羅平ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的羅平網(wǎng)站制作公司

    subprocess模塊用于幫助我們?cè)趐ython代碼中去執(zhí)行一些系統(tǒng)命令,在執(zhí)行python程序時(shí),該模塊會(huì)創(chuàng)建出一個(gè)子進(jìn)程,來運(yùn)行外部程序。

    該模塊擁有多個(gè)方法,具體如下:

  • subprocess.call()
    直接打印系統(tǒng)命令的執(zhí)行結(jié)果,如果執(zhí)行成功,返回狀態(tài)碼為0,否則為1,例如:

#執(zhí)行成功
import subprocess
CALL1 = subprocess.call('ping 127.0.0.1 -n 1',shell=True)
print("Returncode:%d"%CALL1)

打印結(jié)果為:

正在 Ping 127.0.0.1 具有 32 字節(jié)的數(shù)據(jù):
來自 127.0.0.1 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=128

127.0.0.1 的 Ping 統(tǒng)計(jì)信息:
    數(shù)據(jù)包: 已發(fā)送 = 1,已接收 = 1,丟失 = 0 (0% 丟失),
往返行程的估計(jì)時(shí)間(以毫秒為單位):
    最短 = 0ms,最長(zhǎng) = 0ms,平均 = 0ms
Returncode:0
#執(zhí)行失敗
CALL2 = subprocess.call('ping 1.1.1.2 -n 1',shell=True)
print("Returncode:%d"%CALL2)

打印結(jié)果為:

正在 Ping 1.1.1.2 具有 32 字節(jié)的數(shù)據(jù):
請(qǐng)求超時(shí)。

1.1.1.2 的 Ping 統(tǒng)計(jì)信息:
    數(shù)據(jù)包: 已發(fā)送 = 1,已接收 = 0,丟失 = 1 (100% 丟失),
Returncode:1

  • subprocess.check_call()
    直接打印系統(tǒng)命令的執(zhí)行結(jié)果,使用方法與subprocess.call()相同,只不過該函數(shù)會(huì)檢測(cè)返回狀態(tài)碼,如果為1,則會(huì)拋出subprocess.CalledProcessError錯(cuò)誤,例如:

import subprocess
# 執(zhí)行成功
# CHECK_CALL1 = subprocess.check_call('ping 127.0.0.1 -n 1',shell=True)
# print(CHECK_CALL1)
# 執(zhí)行失敗
CHECK_CALL2 = subprocess.check_call('ping 1.1.1.2 -n 1',shell=True)
print(CHECK_CALL2)

打印結(jié)果為:

正在 Ping 1.1.1.2 具有 32 字節(jié)的數(shù)據(jù):
請(qǐng)求超時(shí)。

1.1.1.2 的 Ping 統(tǒng)計(jì)信息:
    數(shù)據(jù)包: 已發(fā)送 = 1,已接收 = 0,丟失 = 1 (100% 丟失),
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/first/subprocess/check_call.py", line 7, in <module>
    CHECK_CALL2 = subprocess.check_call('ping 1.1.1.2 -n 1',shell=True)
  File "C:\Python3.6\lib\subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'ping 1.1.1.2 -n 1' returned non-zero exit status 1.

可以結(jié)合try...expect...語句做異常處理。

  • subprocess.check_output()

    不會(huì)將系統(tǒng)命令的執(zhí)行結(jié)果直接打印出來,返回一個(gè)bytes類型的對(duì)象,該對(duì)象包含了系統(tǒng)命令的執(zhí)行結(jié)果,如果執(zhí)行失敗會(huì)拋出subprocess.CalledProcessError錯(cuò)誤,例如:

import subprocess
#執(zhí)行成功
CHECK_OUTPUT1 = subprocess.check_output('ping 127.0.0.1 -n 1',shell=True)
print(type(CHECK_OUTPUT1))
print(str(CHECK_OUTPUT1,'gbk'))

打印結(jié)果為:

<class 'bytes'>

正在 Ping 127.0.0.1 具有 32 字節(jié)的數(shù)據(jù):
來自 127.0.0.1 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=128

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

  • subprocess.Popen()

    上面幾個(gè)函數(shù)都是Popen()的封裝,主進(jìn)程都會(huì)等待子進(jìn)程執(zhí)行完畢,Popen()創(chuàng)建的子進(jìn)程不會(huì)被等待,相當(dāng)于異步執(zhí)行。

    1.Popen()創(chuàng)建的對(duì)象有多個(gè)方法,可以針對(duì)子進(jìn)程執(zhí)行個(gè)性化操作,例如:

import subprocess
import time
time.clock()
POPEN1 = subprocess.Popen('ping 127.0.0.1 -n 10',shell=True)
print(POPEN1)
print(time.clock())

打印結(jié)果為:

<subprocess.Popen object at 0x02230810>
0.06108553745727746
#從時(shí)間上看,主程序很快就結(jié)束了

Popen()創(chuàng)建的對(duì)象方法包括:

POPEN1.poll() # 檢查子進(jìn)程狀態(tài)
POPEN1.kill() # 終止子進(jìn)程
POPEN1.terminate() # 終止子進(jìn)程
POPEN1.send_signal() # 向子進(jìn)程發(fā)送信號(hào)
pid屬性包含了子進(jìn)程的pid號(hào)

    2.subprocess.Popen()另一個(gè)常用的功能是文本流控制,對(duì)應(yīng)的"標(biāo)準(zhǔn)輸入"、"標(biāo)準(zhǔn)輸出"、"標(biāo)準(zhǔn)錯(cuò)誤"分別是:

POPEN1.stdin
POPEN1.stdout
POPEN1.stderr

subprocess.PIPE(為文本流提供一個(gè)緩存區(qū))作為管道,可以用來連接標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)輸入,例如:

POPEN2 = subprocess.Popen('ping 127.0.0.1 -n 1',shell=True,stdout=subprocess.PIPE)
STDOUT2 = POPEN2.stdout
# print(str(STDOUT2.read(),'gbk'))

POPEN3 = subprocess.Popen('findstr 數(shù)據(jù)包',shell=True,stdin=STDOUT2,stdout=subprocess.PIPE)
STDOUT3 = POPEN3.stdout
print(str(STDOUT3.read(),'gbk'))

執(zhí)行結(jié)果為:

數(shù)據(jù)包: 已發(fā)送 = 1,已接收 = 1,丟失 = 0 (0% 丟失),

網(wǎng)站欄目:python模塊--subprocess
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article10/pshpdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)動(dòng)態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
通海县| 连城县| 商洛市| 社旗县| 郓城县| 新乡县| 铁岭市| 麻阳| 永平县| 阿坝县| 长治县| 定西市| 石台县| 永胜县| 六安市| 若尔盖县| 宾阳县| 海淀区| 黄浦区| 石棉县| 平山县| 孙吴县| 普陀区| 奉化市| 巩义市| 县级市| 临泉县| 乌兰察布市| 乌什县| 宝山区| 木里| 新民市| 榆林市| 定西市| 乃东县| 江陵县| 乐清市| 定远县| 枣强县| 渝中区| 锦州市|