真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python模塊--subprocess

subprocess模塊                                                                                                                                      

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

    subprocess模塊用于幫助我們?cè)趐ython代碼中去執(zhí)行一些系統(tǒng)命令,在執(zhí)行python程序時(shí),該模塊會(huì)創(chuàng)建出一個(gè)子進(jìn)程,來(lái)運(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ù):
來(lái)自 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()相同,只不過(guò)該函數(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 
    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...語(yǔ)句做異常處理。

  • subprocess.check_output()

    不會(huì)將系統(tǒng)命令的執(zhí)行結(jié)果直接打印出來(lái),返回一個(gè)bytes類(lèi)型的對(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é)果為:



正在 Ping 127.0.0.1 具有 32 字節(jié)的數(shù)據(jù):
來(lái)自 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é)果為:


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ū))作為管道,可以用來(lái)連接標(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% 丟失),


文章題目:python模塊--subprocess
網(wǎng)站鏈接:http://weahome.cn/article/pshpdo.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部