日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python之路(第二十篇) subprocess模块

發(fā)布時(shí)間:2024/10/12 python 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之路(第二十篇) subprocess模块 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、subprocess模塊

subprocess英文意思:子進(jìn)程

那什么是進(jìn)程呢?

(一)關(guān)于進(jìn)程的相關(guān)理論基礎(chǔ)知識(shí)

進(jìn)程是對(duì)正在運(yùn)行程序的一個(gè)抽象,進(jìn)程的概念起源于操作系統(tǒng),是操作系統(tǒng)最核心的概念,操作系統(tǒng)的其他所有內(nèi)容都是圍繞進(jìn)程的概念展開(kāi)的。

所以想要真正了解進(jìn)程,必須事先了解操作系統(tǒng).

?

程序員無(wú)法把所有的硬件操作細(xì)節(jié)都了解到,管理這些硬件并且加以優(yōu)化使用是非常繁瑣的工作,這個(gè)繁瑣的工作就是操作系統(tǒng)來(lái)干的,有了他,程序員就從這些繁瑣的工作中解脫了出來(lái),只需要考慮自己的應(yīng)用軟件的編寫就可以了,應(yīng)用軟件直接使用操作系統(tǒng)提供的功能來(lái)間接使用硬件。

?

精簡(jiǎn)的說(shuō)的話,操作系統(tǒng)就是一個(gè)協(xié)調(diào)、管理和控制計(jì)算機(jī)硬件資源和軟件資源的控制程序。

?

?

?

操作系統(tǒng)所處的位置細(xì)說(shuō)的話,操作系統(tǒng)應(yīng)該分成兩部分功能:

?

  • 隱藏了丑陋的硬件調(diào)用接口,為應(yīng)用程序員提供調(diào)用硬件資源的更好,更簡(jiǎn)單,更清晰的模型(系統(tǒng)調(diào)用接口)。應(yīng)用程序員有了這些接口后,就不用再考慮操作硬件的細(xì)節(jié),專心開(kāi)發(fā)自己的應(yīng)用程序即可。例如:操作系統(tǒng)提供了文件這個(gè)抽象概念,對(duì)文件的操作就是對(duì)磁盤的操作,有了文件我們無(wú)需再去考慮關(guān)于磁盤的讀寫控制(比如控制磁盤轉(zhuǎn)動(dòng),移動(dòng)磁頭讀寫數(shù)據(jù)等細(xì)節(jié)).

?

  • 將應(yīng)用程序?qū)τ布Y源的競(jìng)態(tài)請(qǐng)求變得有序化例如:很多應(yīng)用軟件其實(shí)是共享一套計(jì)算機(jī)硬件,比方說(shuō)有可能有三個(gè)應(yīng)用程序同時(shí)需要申請(qǐng)打印機(jī)來(lái)輸出內(nèi)容,那么a程序競(jìng)爭(zhēng)到了打印機(jī)資源就打印,然后可能是b競(jìng)爭(zhēng)到打印機(jī)資源,也可能是c,這就導(dǎo)致了無(wú)序,打印機(jī)可能打印一段a的內(nèi)容然后又去打印c...,操作系統(tǒng)的一個(gè)功能就是將這種無(wú)序變得有序。

?

進(jìn)程是操作系統(tǒng)提供的最古老也是最重要的抽象概念之一。

?

什么是進(jìn)程

進(jìn)程(Process)是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。

狹義定義:進(jìn)程是正在運(yùn)行的程序的實(shí)例(an instance of a computer program that is being executed)。

廣義定義:進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進(jìn)程既是基本的分配單元,也是基本的執(zhí)行單元。

?

簡(jiǎn)單的來(lái)說(shuō)就是程序僅僅只是一堆代碼而已,而進(jìn)程指的是程序的運(yùn)行過(guò)程,就是執(zhí)行一個(gè)一系列程序代碼的過(guò)程。

?

進(jìn)程和程序的區(qū)別

  • 程序是指令和數(shù)據(jù)的有序集合,其本身沒(méi)有任何運(yùn)行的含義,是一個(gè)靜態(tài)的概念。而進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過(guò)程,它是一個(gè)動(dòng)態(tài)的概念。

  • 程序可以作為一種軟件資料長(zhǎng)期存在,而進(jìn)程是有一定生命期的。

  • 程序是永久的,進(jìn)程是暫時(shí)的。

?

(二)進(jìn)程、父進(jìn)程、子進(jìn)程

父進(jìn)程:如果進(jìn)程a創(chuàng)建了進(jìn)程b,那么進(jìn)程a就是進(jìn)程b的父進(jìn)程,反之進(jìn)程b就是進(jìn)程a的子進(jìn)程。

?

父進(jìn)程定義在計(jì)算機(jī)領(lǐng)域,父進(jìn)程(Parent Process)指已創(chuàng)建一個(gè)或多個(gè)子進(jìn)程的進(jìn)程。

父進(jìn)程和子進(jìn)程的關(guān)系是管理和被管理的關(guān)系,當(dāng)父進(jìn)程終止時(shí),子進(jìn)程也隨之而終止。但子進(jìn)程終止,父進(jìn)程并不一定終止。

進(jìn)程得到的是除了代碼段是與父進(jìn)程共享的意外,其他所有的都是得到父進(jìn)程的一個(gè)副本,子進(jìn)程的所有資源都繼承父進(jìn)程,得到父進(jìn)程資源的副本,既然為副本,也就是說(shuō),二者并不共享地址空間。,兩個(gè)是單獨(dú)的進(jìn)程,繼承了以后二者就沒(méi)有什么關(guān)聯(lián)了,子進(jìn)程單獨(dú)運(yùn)行。

?

?

(三)subprocess模塊

任何操作系統(tǒng)上都可以通過(guò)命令行指令與操作系統(tǒng)進(jìn)行交互,比如Linux平臺(tái)下的shell、Windows下的cmd命令行。

Python來(lái)完成這些命令行指令的執(zhí)行呢?另外,我們應(yīng)該知道的是命令行指令的執(zhí)行通常有兩個(gè)我們比較關(guān)注的結(jié)果:

  • 命令執(zhí)行的狀態(tài)碼--表示命令執(zhí)行是否成功

  • 命令執(zhí)行的輸出結(jié)果--命令執(zhí)行成功后的輸出

  • ?

    ?

    早期的Python版本中,我們主要是通過(guò)os.system()、os.popen().read()等函數(shù)來(lái)執(zhí)行命令行指令的,另外還有一個(gè)很少使用的commands模塊。但是從Python 2.4開(kāi)始官方文檔中建議使用的是subprocess模塊。

    ?

    subprocess是Python 2.4中新增的一個(gè)模塊,它允許你生成新的進(jìn)程,連接到它們的 input/output/error 管道,并獲取它們的返回(狀態(tài))碼。這個(gè)模塊的目的在于替換幾個(gè)舊的模塊和方法,如:

    • os.system

    • os.spawn*

    ?

    ?

    1. subprocess模塊中的常用函數(shù)

    函數(shù)描述
    subprocess.run()Python 3.5中新增的函數(shù)。執(zhí)行指定的命令,等待命令執(zhí)行完成后返回一個(gè)包含執(zhí)行結(jié)果的CompletedProcess類的實(shí)例。
    subprocess.call()執(zhí)行指定的命令,返回命令執(zhí)行狀態(tài),其功能類似于os.system(cmd)。
    subprocess.check_call()Python 2.5中新增的函數(shù)。 執(zhí)行指定的命令,如果執(zhí)行成功則返回狀態(tài)碼,否則拋出異常。其功能等價(jià)于subprocess.run(..., check=True)。
    subprocess.check_output()Python 2.7中新增的的函數(shù)。執(zhí)行指定的命令,如果執(zhí)行狀態(tài)碼為0則返回命令執(zhí)行結(jié)果,否則拋出異常。
    subprocess.getoutput(cmd)接收字符串格式的命令,執(zhí)行命令并返回執(zhí)行結(jié)果,其功能類似于os.popen(cmd).read()和commands.getoutput(cmd)。
    subprocess.getstatusoutput(cmd)執(zhí)行cmd命令,返回一個(gè)元組(命令執(zhí)行狀態(tài), 命令執(zhí)行結(jié)果輸出),其功能類似于commands.getstatusoutput()。

    說(shuō)明:

  • 在Python 3.5之后的版本中,官方文檔中提倡通過(guò)subprocess.run()函數(shù)替代其他函數(shù)來(lái)使用subproccess模塊的功能;

  • 在Python 3.5之前的版本中,我們可以通過(guò)subprocess.call(),subprocess.getoutput()等上面列出的其他函數(shù)來(lái)使用subprocess模塊的功能;

  • subprocess.run()、subprocess.call()、subprocess.check_call()和subprocess.check_output()都是通過(guò)對(duì)subprocess.Popen的封裝來(lái)實(shí)現(xiàn)的高級(jí)函數(shù),因此如果我們需要更復(fù)雜功能時(shí),可以通過(guò)subprocess.Popen來(lái)完成。

  • subprocess.getoutput()和subprocess.getstatusoutput()函數(shù)是來(lái)自Python 2.x的commands模塊的兩個(gè)遺留函數(shù)。它們隱式的調(diào)用系統(tǒng)shell,并且不保證其他函數(shù)所具有的安全性和異常處理的一致性。另外,它們從Python 3.3.4開(kāi)始才支持Windows平臺(tái)。

  • ?

    ?

    ?

    2. 上面各函數(shù)的定義及參數(shù)說(shuō)明

    函數(shù)參數(shù)列表:

    subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)?subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)?subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)?subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False, timeout=None)?subprocess.getstatusoutput(cmd)?subprocess.getoutput(cmd)

      

    ?

    參數(shù)說(shuō)明:

    • args: 要執(zhí)行的shell命令,默認(rèn)應(yīng)該是一個(gè)字符串序列,該參數(shù)用于啟動(dòng)進(jìn)程。這可能是一個(gè)列表或一個(gè)字符串。如['df', '-Th']或('df', '-Th')【“'df -Th”這里是linux命令,在終端里輸入的,功能是顯示磁盤分區(qū)相關(guān)信息】,也可以是一個(gè)字符串,如'df -Th',但是此時(shí)需要把shell參數(shù)的值置為True。

    • shell: 如果shell為True,那么指定的命令將通過(guò)shell執(zhí)行。如果我們需要訪問(wèn)某些shell的特性,如管道、文件名通配符、環(huán)境變量擴(kuò)展功能,這將是非常有用的。當(dāng)然,python本身也提供了許多類似shell的特性的實(shí)現(xiàn),如glob、fnmatch、os.walk()、os.path.expandvars()、os.expanduser()和shutil等。當(dāng)shell=True時(shí),表示在系統(tǒng)默認(rèn)的shell環(huán)境中執(zhí)行新的進(jìn)程,此shell在windows表示為cmd.exe,在linux為/bin/sh。shell=True如果與不可信輸入結(jié)合使用,傳遞可能會(huì)帶來(lái)安全隱患。執(zhí)行輸入的命令最好不要設(shè)置為True,以防shell注入。

    • check: 如果check參數(shù)的值是True,且執(zhí)行命令的進(jìn)程以非0狀態(tài)碼退出,則會(huì)拋出一個(gè)CalledProcessError的異常,且該異常對(duì)象會(huì)包含 參數(shù)、退出狀態(tài)碼、以及stdout和stderr(如果它們有被捕獲的話)。

    • 參數(shù)stdin, stdout, stderr分別表示程序的標(biāo)準(zhǔn)輸入、輸出、錯(cuò)誤句柄。他們可以是PIPE,文件描述符或文件對(duì)象,也可以設(shè)置為None,表示從父進(jìn)程繼承。PIPE表示創(chuàng)建管道。stderr特殊,可以設(shè)置成STDOUT,表示與標(biāo)準(zhǔn)輸出一致

    • run()函數(shù)默認(rèn)不會(huì)捕獲命令執(zhí)行結(jié)果的正常輸出和錯(cuò)誤輸出,如果我們向獲取這些內(nèi)容需要傳遞subprocess.PIPE,然后可以通過(guò)返回的CompletedProcess類實(shí)例的stdout和stderr屬性或捕獲相應(yīng)的內(nèi)容;

    • call()和check_call()函數(shù)返回的是命令執(zhí)行的狀態(tài)碼,而不是CompletedProcess類實(shí)例,所以對(duì)于它們而言,stdout和stderr不適合賦值為subprocess.PIPE;

    • check_output()函數(shù)默認(rèn)就會(huì)返回命令執(zhí)行結(jié)果,所以不用設(shè)置stdout的值,如果我們希望在結(jié)果中捕獲錯(cuò)誤信息,可以執(zhí)行stderr=subprocess.STDOUT。

    • input: 該參數(shù)是傳遞給Popen.communicate(),通常該參數(shù)的值必須是一個(gè)字節(jié)序列,如果universal_newlines=True,則其值應(yīng)該是一個(gè)字符串。

    • universal_newlines: 該參數(shù)影響的是輸入與輸出的數(shù)據(jù)格式,比如它的值默認(rèn)為False,此時(shí)stdout和stderr的輸出是字節(jié)序列;當(dāng)該參數(shù)的值設(shè)置為True時(shí),stdout和stderr的輸出是字符串。

    ?

    args 所有調(diào)用的必填參數(shù),參數(shù)值為字符串、序列。處于方便,通常更偏向于提供序列。如果傳遞的是單一字符串,shell參數(shù)值必須為True,如果不提供其它任何參數(shù),傳遞單一字符串的情況下,該字符串必須是需要執(zhí)行的程序名。

    ?

    ?

    subprocess.PIPE

    subprocess.PIPE是特殊值,可用作標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯(cuò)誤參數(shù),stdout 負(fù)責(zé)接收正常的輸出,stderr 負(fù)責(zé)接收錯(cuò)誤輸出,subprocess.PIPE 負(fù)責(zé)處理整體的數(shù)據(jù)流,把錯(cuò)誤信息通過(guò)管道賦值給變量stderr,把輸出信息通過(guò)管道賦值給stdout.

    ?

    3、subprocess.run()

    subprocess.run()函數(shù)是Python3.5中新增的一個(gè)高級(jí)函數(shù),功能是創(chuàng)建子進(jìn)程執(zhí)行某個(gè)命令,其返回值是一個(gè)subprocess.CompletedPorcess類的實(shí)例

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

      

    run()函數(shù)默認(rèn)不會(huì)捕獲命令執(zhí)行結(jié)果的正常輸出和錯(cuò)誤輸出,如果我們向獲取這些內(nèi)容需要傳遞subprocess.PIPE,然后可以通過(guò)返回的CompletedProcess類實(shí)例的stdout和stderr屬性或捕獲相應(yīng)的內(nèi)容。

    ?

    subprocess.CompletedProcess類介紹

    subprocess.CompletedProcess表示的是一個(gè)已結(jié)束進(jìn)程的狀態(tài)信息,它所包含的屬性如下:

    • args: 用于加載該進(jìn)程的參數(shù),這可能是一個(gè)列表或一個(gè)字符串

    • returncode: 子進(jìn)程的退出狀態(tài)碼。通常情況下,退出狀態(tài)碼為0則表示進(jìn)程成功運(yùn)行了;一個(gè)負(fù)值-N表示這個(gè)子進(jìn)程被信號(hào)N終止了

    • stdout: 從子進(jìn)程捕獲的stdout。這通常是一個(gè)字節(jié)序列,如果run()函數(shù)被調(diào)用時(shí)指定universal_newlines=True,則該屬性值是一個(gè)字符串。如果run()函數(shù)被調(diào)用時(shí)指定stderr=subprocess.STDOUT,那么stdout和stderr將會(huì)被整合到這一個(gè)屬性中,且stderr將會(huì)為None

    • stderr: 從子進(jìn)程捕獲的stderr。它的值與stdout一樣,是一個(gè)字節(jié)序列或一個(gè)字符串。如果stderr滅有被捕獲的話,它的值就為None

    • check_returncode(): 如果returncode是一個(gè)非0值,則該方法會(huì)拋出一個(gè)CalledProcessError異常。

    ?

    subprocess.run()例子

    ?

    例子1(測(cè)試環(huán)境 Windows7 )

    import subprocess?v1 = subprocess.run(["ping","www.baidu.com"],stderr = subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True)# 執(zhí)行ping命令,niversal_newlines為True時(shí),stdout將輸出字符串v2 = subprocess.run("calc",stderr = subprocess.PIPE,stdout=subprocess.PIPE) #打開(kāi)系統(tǒng)自帶的計(jì)算器print(v1.stdout)

      

    輸出結(jié)果

    ?

    正在 Ping www.a.shifen.com [119.75.213.61] 具有 32 字節(jié)的數(shù)據(jù):來(lái)自 119.75.213.61 的回復(fù): 字節(jié)=32 時(shí)間=44ms TTL=52來(lái)自 119.75.213.61 的回復(fù): 字節(jié)=32 時(shí)間=43ms TTL=52來(lái)自 119.75.213.61 的回復(fù): 字節(jié)=32 時(shí)間=43ms TTL=52來(lái)自 119.75.213.61 的回復(fù): 字節(jié)=32 時(shí)間=44ms TTL=52?119.75.213.61 的 Ping 統(tǒng)計(jì)信息:數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),往返行程的估計(jì)時(shí)間(以毫秒為單位):最短 = 43ms,最長(zhǎng) = 44ms,平均 = 43ms

      

    ??

    分析:ping輸出的結(jié)果www.a.shifen.com是百度的別名。這個(gè)是對(duì)百度網(wǎng)址加的外殼! 以免被攻擊的。

    ?

    ?

    例子2(測(cè)試環(huán)境 ubuntu16.04.1)

    import subprocess?p = subprocess.run(["ls","-l"],stderr=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True)print(p.stdout)

      

    輸出結(jié)果

    ?

    ?

    ?

    ?

    ?

    4、subprocess.call()

    subprocess.call運(yùn)行args描述的命令,等待命令完成后返回returncode屬性。subprocess.call返回的是命令執(zhí)行的狀態(tài)碼,而不是CompletedProcess類實(shí)例,所以對(duì)于它們而言,stdout和stderr不適合賦值subprocess.PIPE。

    subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)

      

    ?

    • returncode: 子進(jìn)程的退出狀態(tài)碼。通常情況下,退出狀態(tài)碼為0則表示進(jìn)程成功運(yùn)行了;一個(gè)負(fù)值-N表示這個(gè)子進(jìn)程被信號(hào)N終止了。

    ?

    subprocess.call()例子

    例子1(測(cè)試環(huán)境 Windows7 )

    import subprocessp = subprocess.call(["calc"])print(p)

      

    輸出結(jié)果

    0

      

    ?

    ?

    例子2(測(cè)試環(huán)境 ubuntu16.04.1)


    ?
    import subprocess?p = subprocess.call("ls -l",shell=True)print("----------------------")print(p)

      

    ?

    輸出結(jié)果

    總用量 16drwxrwxr-x 3 nicholas nicholas 4096 5月 23 00:23 b-rw-rw-r-- 1 nicholas nicholas 0 5月 8 19:03 __init__.py-rwxrw-r-- 1 nicholas nicholas 16 5月 22 21:58 old_test.txtdrwxrwxr-x 3 nicholas nicholas 4096 5月 23 00:23 temp-rw-rw-r-- 1 nicholas nicholas 100 5月 30 20:02 test.py----------------------0

      

    ?

    ?

    ?

    ?

    5、subprocess.Popen介紹

    subprocess.Popen類用于在一個(gè)新的進(jìn)程中執(zhí)行一個(gè)子程序,用來(lái)創(chuàng)建子進(jìn)程。

    上面的subprocess.run()、subprocess.call()等介紹的這些函數(shù)都是基于subprocess.Popen類實(shí)現(xiàn)的,通過(guò)使用這些被封裝后的高級(jí)函數(shù)可以很方面的完成一些常見(jiàn)的需求。由于subprocess模塊底層的進(jìn)程創(chuàng)建和管理是由Popen類來(lái)處理的。

    (1)subprocess.Popen的構(gòu)造函數(shù)

    class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False,startup_info=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())

      

    ?

    參數(shù)說(shuō)明:

    • args: 要執(zhí)行的shell命令,可以是字符串,也可以是命令各個(gè)參數(shù)組成的序列。當(dāng)該參數(shù)的值是一個(gè)字符串時(shí),該命令的解釋過(guò)程是與平臺(tái)相關(guān)的,因此通常建議將args參數(shù)作為一個(gè)序列傳遞。

    • bufsize: 指定緩存策略,0表示不緩沖,1表示行緩沖,其他大于1的數(shù)字表示緩沖區(qū)大小,負(fù)數(shù) 表示使用系統(tǒng)默認(rèn)緩沖策略。

    • stdin, stdout, stderr: 分別表示程序標(biāo)準(zhǔn)輸入、輸出、錯(cuò)誤句柄。合法值為PIPE,DEVNULL,已存在文件描述符(一個(gè)正整數(shù)),已存在文件對(duì)象和None。 PIPE表示應(yīng)該創(chuàng)建通往子進(jìn)程的管道。DEVNULL表示應(yīng)該使用指定文件os.devnull。默認(rèn)參數(shù)None則表示無(wú)進(jìn)行重定向,子進(jìn)程文件句柄從父進(jìn)程繼承。此外,stderr還可以是STDOUT,表明子進(jìn)程的錯(cuò)誤數(shù)據(jù)應(yīng)該被放進(jìn)相同的文件句柄stdout。

    • preexec_fn: 用于指定一個(gè)將在子進(jìn)程運(yùn)行之前被調(diào)用的可執(zhí)行對(duì)象,只在Unix平臺(tái)下有效。

    • close_fds: 如果該參數(shù)的值為True,則除了0,1和2之外的所有文件描述符都將會(huì)在子進(jìn)程執(zhí)行之前被關(guān)閉。

      默認(rèn)值根據(jù)平臺(tái)而異。Unix平臺(tái)總是默認(rèn)為True。在windows平臺(tái)下,如果close_fds被設(shè)置為True,則新創(chuàng)建的子進(jìn)程將不會(huì)繼承父進(jìn)程的輸入、輸出、錯(cuò)誤管道。(標(biāo)準(zhǔn)的輸入,輸出和錯(cuò)誤輸出分別表示為STDIN,STDOUT,STDERR,也可以用0,1,2來(lái)表示。)

    • shell: 該參數(shù)用于標(biāo)識(shí)是否使用shell作為要執(zhí)行的程序,如果shell值為True,則建議將args參數(shù)作為一個(gè)字符串傳遞而不要作為一個(gè)序列傳遞。為True時(shí),表示將通過(guò)shell來(lái)執(zhí)行。

    • cwd: 如果該參數(shù)值不是None,則該函數(shù)將會(huì)在執(zhí)行這個(gè)子進(jìn)程之前改變當(dāng)前工作目錄到cwd。

    • env: 用于指定子進(jìn)程的環(huán)境變量,如果env=None,那么子進(jìn)程的環(huán)境變量將從父進(jìn)程中繼承。如果env!=None,它的值必須是一個(gè)映射對(duì)象。

    • universal_newlines: 如果該參數(shù)值為True,則該文件對(duì)象的stdin,stdout和stderr將會(huì)作為文本流被打開(kāi),否則他們將會(huì)被作為二進(jìn)制流被打開(kāi)。

    • startupinfo和creationflags: 這兩個(gè)參數(shù)只在Windows下有效,它們將被傳遞給底層的CreateProcess()函數(shù),用于設(shè)置子進(jìn)程的一些屬性,如主窗口的外觀,進(jìn)程優(yōu)先級(jí)等。

    ?

    (2) subprocess.Popen類的實(shí)例可調(diào)用的方法

    方法描述
    Popen.poll()用于檢查子進(jìn)程(命令)是否已經(jīng)執(zhí)行結(jié)束,沒(méi)結(jié)束返回None,結(jié)束后返回狀態(tài)碼。
    Popen.wait(timeout=None)等待子進(jìn)程結(jié)束,并返回狀態(tài)碼;如果在timeout指定的秒數(shù)之后進(jìn)程還沒(méi)有結(jié)束,將會(huì)拋出一個(gè)TimeoutExpired異常。
    Popen.communicate(input=None, timeout=None)該方法可用來(lái)與進(jìn)程進(jìn)行交互,比如發(fā)送數(shù)據(jù)到stdin,從stdout和stderr讀取數(shù)據(jù),直到到達(dá)文件末尾。
    Popen.send_signal(signal)發(fā)送指定的信號(hào)給這個(gè)子進(jìn)程。
    Popen.terminate()停止該子進(jìn)程。
    Popen.kill()殺死該子進(jìn)程。

    ?

    關(guān)于communicate()方法的說(shuō)明:

    • 該方法中的可選參數(shù) input 應(yīng)該是將被發(fā)送給子進(jìn)程的數(shù)據(jù),或者如沒(méi)有數(shù)據(jù)發(fā)送給子進(jìn)程,該參數(shù)應(yīng)該是None。input參數(shù)的數(shù)據(jù)類型必須是字節(jié)串,如果universal_newlines參數(shù)值為True,則input參數(shù)的數(shù)據(jù)類型必須是字符串。

    • 該方法返回一個(gè)元組(stdout_data, stderr_data),這些數(shù)據(jù)將會(huì)是字節(jié)穿或字符串(如果universal_newlines的值為True)。

    • 如果在timeout指定的秒數(shù)后該進(jìn)程還沒(méi)有結(jié)束,將會(huì)拋出一個(gè)TimeoutExpired異常。捕獲這個(gè)異常,然后重新嘗試通信不會(huì)丟失任何輸出的數(shù)據(jù)。但是超時(shí)之后子進(jìn)程并沒(méi)有被殺死,為了合理的清除相應(yīng)的內(nèi)容,一個(gè)好的應(yīng)用應(yīng)該手動(dòng)殺死這個(gè)子進(jìn)程來(lái)結(jié)束通信。

    • 需要注意的是,這里讀取的數(shù)據(jù)是緩沖在內(nèi)存中的,所以,如果數(shù)據(jù)大小非常大或者是無(wú)限的,就不應(yīng)該使用這個(gè)方法。

    ?

    例子1(測(cè)試環(huán)境 ubuntu16.04.1)

    import subprocess?# 創(chuàng)建子進(jìn)程,執(zhí)行“l(fā)s -l”,查看當(dāng)前目錄的文件具體信息p = subprocess.Popen("ls -l",stdout=subprocess.PIPE,shell=True,universal_newlines=True)#p是Popen的一個(gè)實(shí)例對(duì)象 print(p.stdout.read()) #調(diào)用Popen的stdout,read()方法讀取輸出結(jié)果?# 修改執(zhí)行的目錄到/temp,然后再創(chuàng)建子進(jìn)程,執(zhí)行“l(fā)s -l”,查看當(dāng)前目錄文件的具體信息p1 = subprocess.Popen("ls -l",stdout=subprocess.PIPE,shell=True,universal_newlines=True,cwd='/tmp')print(p1.stdout.read())

      

    ?

    輸出結(jié)果

    ?

    ?

    ?

    ?

    例子2(測(cè)試環(huán)境 ubuntu16.04.1)

    import subprocess?p = subprocess.Popen(["python3"],shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True) #實(shí)例化suprocess.Popen類創(chuàng)建子進(jìn)程p對(duì)象p.stdin.write("print('nicholas 1') \n")p.stdin.write("print('hello 2') \n")p.stdin.write("print('hworld 3') \n")out,err = p.communicate()print(out)

      

    輸出結(jié)果

    nicholas 1hello 2hworld 3

      

    ?

    分析執(zhí)行過(guò)程

    ?

    1、實(shí)例化suprocess.Popen類創(chuàng)建子進(jìn)程P對(duì)象,調(diào)用shell終端,在終端里執(zhí)行"python3"命令,終端進(jìn)入python環(huán)境,

    2、向子進(jìn)程輸入"print('nicholas 1') \n"語(yǔ)句,向子進(jìn)程輸入"print('hello 2') \n"語(yǔ)句,向子進(jìn)程輸入"print('hworld 3') \n"語(yǔ)句

    3、通過(guò)調(diào)用對(duì)象p的communicate()方法,獲取子進(jìn)程的輸出、錯(cuò)誤

    4、打印子進(jìn)程的輸出

    5、注意參數(shù)universal_newlines是True時(shí),stdin.write要傳入字符串,參數(shù)是False時(shí)要傳入bytes類型。

    ?

    例子3(測(cè)試環(huán)境 Windows7 )

    import subprocess?p = subprocess.Popen(["python"],shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)out,err = p.communicate(input="print('nicholas niubi')")print(out)

      

    輸出結(jié)果

    nicholas niubi

     

    ?

    ?

    分析:

    1、實(shí)例化suprocess.Popen類創(chuàng)建子進(jìn)程p對(duì)象,打開(kāi)Windows命令行,執(zhí)行“python”命令,進(jìn)入python環(huán)境

    2、通過(guò)調(diào)用對(duì)象p的communicate()方法向stdin發(fā)送數(shù)據(jù)"print('nicholas niubi')",并分別獲取對(duì)象p的輸出和錯(cuò)誤

    3、打印輸出

    4、注意參數(shù)universal_newlines是True時(shí),input要傳入字符串,參數(shù)是False時(shí)要傳入bytes類型。

    ?

    ?

    ?

    ?

    參考資料

    [1]https://www.cnblogs.com/Eva-J/articles/8253521.html

    [2]https://www.cnblogs.com/Eva-J/articles/8253549.html

    [3]https://www.cnblogs.com/yyds/p/7288916.html

    轉(zhuǎn)載于:https://www.cnblogs.com/Nicholas0707/p/9114601.html

    總結(jié)

    以上是生活随笔為你收集整理的Python之路(第二十篇) subprocess模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    久久免费影院 | 国产精品12 | 园产精品久久久久久久7电影 | 日韩精品一区二区三区三炮视频 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲午夜小视频 | 中文字幕高清有码 | 中文字幕欲求不满 | 九九九九九精品 | 国产精品大全 | 激情久久久久久久久久久久久久久久 | 国产一级片一区二区三区 | 中文字幕永久免费 | 人人干人人干人人干 | 久久a国产 | 国产成人777777| 色资源网免费观看视频 | 亚洲激情 欧美激情 | 在线观看视频97 | 黄色一级动作片 | 国产小视频免费在线网址 | 天天爱天天插 | 亚洲 欧美日韩 国产 中文 | 97视频网址| 国产成人精品在线 | 国产很黄很色的视频 | a v在线视频 | 亚洲高清视频在线播放 | 开心色停停 | 亚洲a免费| 亚洲精品视频一 | 97视频资源 | 国产精品久久99 | 国色天香在线 | 亚洲欧洲av在线 | 久草www | 日韩特黄一级欧美毛片特黄 | 免费在线观看一区二区三区 | 17videosex性欧美 | 国产一区二区在线视频观看 | 日本不卡一区二区三区在线观看 | 中文字幕av在线不卡 | 亚洲视频免费 | 四虎影视久久久 | 久久精品99国产国产精 | 亚洲四虎 | 国产福利在线不卡 | 麻豆久久一区二区 | 国产专区欧美专区 | 国产精品自产拍在线观看 | 日韩在线观看三区 | 亚洲视频在线观看免费 | 免费观看成人 | 69国产精品成人在线播放 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 亚洲精品99久久久久中文字幕 | 亚洲作爱 | 狠狠干免费 | 狠狠躁天天躁 | 国产精品一区二区美女视频免费看 | 日韩网站一区二区 | 一本一本久久aa综合精品 | 天天射天天干天天插 | 免费看片网站91 | 色婷婷99 | 超碰官网| 欧美激情精品久久久久久 | 精品国产欧美一区二区三区不卡 | av再线观看| 波多野结衣精品 | 欧美五月婷婷 | www.av在线.com | 中文在线免费观看 | 综合激情网... | 91av视频免费在线观看 | 中文字幕在线观看免费 | 韩日av在线 | 首页国产精品 | 久久极品 | 国产亚洲一级高清 | 久久久精品影视 | 天天爽夜夜操 | 日韩一区二区三免费高清在线观看 | 久久视频在线免费观看 | 国产精品普通话 | 中文字幕日韩在线播放 | 国产一级精品绿帽视频 | 国产成人在线免费观看 | 99精品国产在热久久 | 激情五月视频 | 国产欧美最新羞羞视频在线观看 | 国产成人一区在线 | 狠狠色丁香婷婷综合最新地址 | 日韩电影久久 | 亚洲成av人影院 | 狠狠操狠狠操 | av丝袜在线 | 久草视频在线免费 | 婷婷激情综合五月天 | 久久精品99国产精品日本 | 激情校园亚洲 | 日韩成人xxxx | 久久特级毛片 | 精品伊人久久久 | 精品国精品自拍自在线 | 久久99热这里只有精品 | 97视频亚洲 | 国产一区网址 | 欧美夫妻性生活电影 | 在线性视频日韩欧美 | 久久刺激视频 | 日韩簧片在线观看 | 亚洲成人动漫在线观看 | 天天干天天操天天拍 | 亚洲国产mv | 欧美日本一二三 | 国产福利一区在线观看 | 亚洲精品www | a久久久久久 | 天堂av在线免费 | 五月激情丁香图片 | 亚洲天堂精品视频在线观看 | 一本之道乱码区 | 国产一级视频 | 一级黄网| 99麻豆久久久国产精品免费 | 91高清免费观看 | 99免费在线观看视频 | 97视频入口免费观看 | 伊人亚洲综合 | 在线精品观看 | 成人h电影| 人人干狠狠干 | 日韩一区二区免费在线观看 | 在线免费观看视频 | 亚洲欧美视频在线播放 | 天天操天天操天天操天天操 | 精品国产美女 | 成人网在线免费视频 | av在线之家电影网站 | 久久久久久久久久久久国产精品 | 在线日韩中文字幕 | av资源在线看 | 91麻豆精品国产91久久久无需广告 | 91福利视频久久久久 | 九九久久久久久久久激情 | 99久久精品国产一区二区三区 | 国产精品99免视看9 国产精品毛片一区视频 | 97色涩| 天天干夜夜夜操天 | 欧美不卡视频在线 | 九九99靖品 | 狠狠狠狠狠狠天天爱 | 中文字幕久久精品亚洲乱码 | 久久成人久久 | 干狠狠| 国产中文在线字幕 | 久久观看最新视频 | 黄色网大全 | 高清久久久久久 | 国产黄色在线观看 | 久久精品专区 | 国产一区观看 | 免费三级影片 | 精品一区二区免费视频 | 国产一级片免费观看 | 久草免费福利在线观看 | 在线视频 成人 | 99自拍视频在线观看 | a级片网站 | 国内精品久久久久久久 | 久99久视频 | 香蕉视频91 | 夜夜爽88888免费视频4848 | 国产精品免费一区二区三区 | 中文一区在线观看 | 四虎成人精品永久免费av | 国产精品久久久久久久久久久久久久 | 精品国产欧美 | 亚洲精品免费在线观看视频 | 亚洲婷婷综合色高清在线 | 久久久久亚洲精品 | 欧美精品久久久久久久免费 | 久久视频网 | 中文在线免费视频 | 国产欧美综合视频 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 午夜国产一区二区三区四区 | 国产黄a三级三级 | 国产精品亚洲a | 天天射天天射天天射 | 久久免费看 | www狠狠| 伊人五月综合 | 日日日操| 久久精品中文 | 久久伊人热 | 久久人人爽 | 久久成人毛片 | 热久久电影 | 一区二区欧美日韩 | 九九国产视频 | 国产女人免费看a级丨片 | 成人久久久久 | 日韩超碰在线 | 一区二区三区在线免费观看视频 | 欧美一区二区三区四区夜夜大片 | avav99| 欧美一级片免费播放 | 国产福利在线免费 | 特黄特黄的视频 | 综合在线观看色 | 黄色一级在线视频 | 99亚洲视频 | 久久精品一区二区三区中文字幕 | 欧美精品一区在线发布 | 国产精品女视频 | 国产麻豆传媒 | 国产在线1区 | 美女视频免费精品 | 久草亚洲视频 | 久久成年人视频 | 92中文资源在线 | 欧美精品在线观看免费 | 久草在线视频首页 | 91麻豆精品国产自产 | 亚洲精品在线资源 | 亚洲少妇影院 | 最近免费在线观看 | 久久成人久久 | 国产亚洲精品久久久久秋 | 手机看国产毛片 | 国产成人精品三级 | 五月婷婷电影网 | 中文字幕专区高清在线观看 | 亚洲国产中文字幕在线视频综合 | 久久国产精品一区二区 | 狠狠狠色丁香婷婷综合激情 | 精品亚洲视频在线观看 | 在线观看小视频 | 国产麻豆精品一区二区 | 午夜电影中文字幕 | 国产毛片在线 | 91福利国产在线观看 | 丁香婷婷激情国产高清秒播 | 中文字幕人成不卡一区 | 99九九热只有国产精品 | 精品一区中文字幕 | 四虎免费av | 亚洲国产中文在线观看 | 99精品在线视频播放 | 国产精品观看在线亚洲人成网 | 日韩免费在线一区 | 国产精品久久久久一区二区三区 | 色综合色综合色综合 | 911香蕉 | 亚洲一区二区三区四区精品 | 欧美午夜久久久 | 91天天视频| 91精品国产福利在线观看 | av动态图片 | 婷婷丁香九月 | 超碰97中文 | 91看片淫黄大片一级在线观看 | 字幕网资源站中文字幕 | 国产福利午夜 | 四虎成人免费影院 | 国产精品一区二区久久久久 | 亚洲最新视频在线 | 婷婷色站 | 一本一本久久aa综合精品 | 91精品国产三级a在线观看 | 亚洲一级特黄 | 日韩黄色在线电影 | 91精品国产欧美一区二区成人 | 欧美激情va永久在线播放 | 夜夜视频资源 | 国产精品免费观看国产网曝瓜 | www婷婷 | 免费在线精品视频 | 国产成人亚洲在线电影 | 国产另类av | 69国产成人综合久久精品欧美 | 久久99视频 | 国产精品一区二区在线免费观看 | 国产999精品久久久影片官网 | 久久69精品久久久久久久电影好 | 亚洲欧洲精品在线 | 黄色网在线播放 | 欧美精品久久久久久久亚洲调教 | 91最新网址在线观看 | 香蕉视频在线网站 | 国产精品久久久电影 | 日本精油按摩3 | 中文字幕丝袜制服 | 亚洲首页 | 久久精品国产成人精品 | av一级一片 | 99久e精品热线免费 99国产精品久久久久久久久久 | 国产一在线精品一区在线观看 | 久久免费99 | 99视频一区 | 成人av在线播放网站 | 国产精品久久久久一区二区 | 亚洲热久久 | 超碰在线观看av | 91最新在线观看 | 久久9999久久免费精品国产 | 日p视频在线观看 | 国产999精品 | 日日色综合 | 六月色丁| 97碰在线 | 欧美日比视频 | 亚洲一区视频在线播放 | 综合激情婷婷 | 免费中午字幕无吗 | 在线日本看片免费人成视久网 | 超碰97人人爱 | 韩国av三级 | 69xxxx欧美| 久久99精品国产99久久 | 人人干在线 | 国产亚洲精品中文字幕 | 干 操 插 | 国产一级片网站 | 麻豆国产在线播放 | 激情综合网五月 | 日本成人免费在线观看 | 亚洲天堂首页 | 国产精品21区 | 亚洲婷婷在线 | 久久久久免费视频 | 国产高清视频网 | 日韩中文字幕免费视频 | 91麻豆精品国产91久久久更新时间 | 在线视频在线观看 | 国产精品一区久久久久 | 精品在线你懂的 | 免费精品人在线二线三线 | 国语久久 | 91久久在线观看 | 亚洲精品视频在线观看免费视频 | 日韩二区三区在线 | 天堂网av在线 | 亚洲欧洲av | 激情网五月 | 中文字幕av日韩 | 激情在线网址 | 国产成人av一区二区三区在线观看 | 久久综合天天 | 日韩在线视| 亚洲成人在线免费 | 国内精品久久久久久久影视麻豆 | 狠狠狠干 | 午夜影院三级 | www在线免费观看 | 激情五月***国产精品 | 国产精品av久久久久久无 | 麻豆传媒视频在线 | 亚州免费视频 | 黄色国产高清 | 96香蕉视频 | 国产精品久久久久久久7电影 | 欧美国产高清 | 在线视频福利 | 日日草视频 | 中文字幕亚洲在线观看 | 99久久婷婷国产精品综合 | 日本久热 | 一区免费视频 | 好看av在线 | av网站有哪些| 久草在线中文视频 | 久久男人影院 | 国产一区二区久久久 | 黄www在线观看 | 丝袜网站在线观看 | 999色视频 | 在线观看成人av | 摸bbb搡bbb搡bbbb| 99精品国产aⅴ | 国产成人精品午夜在线播放 | 丁香婷婷社区 | 亚洲一区网站 | 色婷婷国产精品 | 久久久免费看视频 | 国产精品18久久久久久久久久久久 | 9在线观看免费高清完整版在线观看明 | 五月天丁香亚洲 | 日韩精品不卡在线 | 91九色视频网站 | 综合久久久久久 | 99国产精品视频免费观看一公开 | 精品国产成人av | 亚洲男人天堂2018 | 亚洲国产97在线精品一区 | 亚洲国产一区在线观看 | 五月婷色| 综合五月婷婷 | 亚洲精品成人网 | 国产在线色站 | 亚洲精品在线国产 | 亚洲视频axxx | 91重口视频 | 婷婷综合激情 | 国内精品亚洲 | 一区二区三区免费在线观看视频 | 视频精品一区二区三区 | 成人一级片视频 | 97免费在线观看视频 | 日韩www在线 | 狠狠操.com | 99久久久久久国产精品 | 在线激情av电影 | 久久久www成人免费精品 | 国产精品成人国产乱 | 四虎成人精品永久免费av九九 | 免费看的黄色片 | 精品v亚洲v欧美v高清v | 超碰97.com | av丝袜在线| 国产成a人亚洲精v品在线观看 | 九九九视频精品 | 中文字幕免费播放 | 日韩精品欧美一区 | 国产精品永久在线观看 | 国产裸体视频网站 | 国产精品每日更新 | 尤物九九久久国产精品的分类 | 麻豆影视在线观看 | 伊人导航| 在线精品视频免费播放 | 中文字幕在线观看三区 | 亚洲三级黄色 | 欧美影片 | 97人人视频 | 97狠狠干| 国产精品视频免费在线观看 | 国产欧美精品一区二区三区四区 | 免费一级日韩欧美性大片 | 黄色一级在线免费观看 | 国产中文字幕视频在线观看 | 黄色官网在线观看 | 国产精品成人国产乱一区 | 一级黄色片在线 | 国产资源在线免费观看 | 一区视频在线 | 天天射天天干天天插 | 国产高清在线不卡 | 欧美国产大片 | 免费看的黄色片 | 91自拍视频在线观看 | 人人插人人| 99精品视频一区二区 | 久久综合五月婷婷 | 国产一区二区电影在线观看 | 国产精品一区二区62 | 成人97人人超碰人人99 | 97精品视频在线播放 | 色开心| 国产久草在线观看 | 久色网 | 日韩欧美视频在线免费观看 | 欧美精品在线观看免费 | 最新中文字幕在线观看视频 | www黄色| 国产视频在线播放 | 黄网在线免费观看 | 人人澡超碰碰97碰碰碰软件 | 久久久久国产精品www | 热久久国产精品 | 成人h视频在线播放 | 丝袜美腿在线播放 | 欧美日韩国产一区二区在线观看 | 国内精品国产三级国产aⅴ久 | 伊人国产在线播放 | 91成人区| 国产精品久久久一区二区三区网站 | 在线观看国产麻豆 | 99久久精品免费看国产一区二区三区 | 香蕉久久久久久久 | 精品久久久精品 | 欧美日韩中字 | 综合影视| 国产呻吟在线 | 日本中文字幕视频 | 99久久久久久 | 亚洲一区av | 伊人久久精品久久亚洲一区 | 亚洲视频在线观看网站 | 国产精品久久久久久久久免费看 | 91亚洲影院 | 日韩一区二区三免费高清在线观看 | 国产在线高清 | 天天插天天狠 | 伊在线视频 | 激情综合亚洲精品 | 欧美激情精品 | 精品a视频 | av网站手机在线观看 | 69人人| 久久99精品国产麻豆宅宅 | 亚洲精品五月天 | 91精品国产福利在线观看 | 色综合 久久精品 | 久产久精国产品 | 91爱爱视频 | 精品国产伦一区二区三区观看体验 | 日韩理论 | 国产午夜精品免费一区二区三区视频 | 午夜三级影院 | 日日躁天天躁 | 人人干干人人 | 亚洲在线看 | 精品在线观看视频 | 久久久久黄 | 免费人成在线观看 | 国产精品欧美久久久久天天影视 | 在线观看亚洲精品 | 五月婷婷播播 | 91网站观看 | 97超碰中文字幕 | 久久综合免费视频 | 成人羞羞视频在线观看免费 | 欧美日韩国产一区二区三区在线观看 | 久久在线观看视频 | 国内精品久久久久影院优 | 日本一区二区三区免费看 | 欧美精选一区二区三区 | 婷婷色在线 | 在线精品在线 | 91麻豆产精品久久久久久 | www.操.com| 国产小视频福利在线 | 97超碰超碰久久福利超碰 | 正在播放五月婷婷狠狠干 | 国产尤物一区二区三区 | av在线看网站 | 国产精品美女999 | 国产精品久久久久毛片大屁完整版 | 国产精品一区在线 | 国产一区在线视频观看 | 蜜臀av免费一区二区三区 | 91av亚洲 | 精品黄色在线观看 | 久草免费在线 | 国产一级视频在线免费观看 | 国产麻豆精品一区 | 中文字幕影视 | 国产视频18 | 激情欧美一区二区免费视频 | 国产在线视频一区二区三区 | 99久热在线精品视频观看 | 欧美日韩视频在线一区 | 日韩精品视频网站 | 国产不卡免费av | 久久免费视频精品 | 午夜美女福利直播 | 国产成人在线网站 | 中文字幕久久精品一区 | 国产成人av| 干 操 插 | 亚洲精品乱码白浆高清久久久久久 | 国产精品毛片久久久久久 | 久久综合九色综合97婷婷女人 | 色97在线 | 黄色www免费 | 婷婷色网视频在线播放 | 美女黄濒| 9999在线视频 | 免费看黄色大全 | 欧美色图一区 | 日韩欧美高清一区二区三区 | 亚洲一区二区高潮无套美女 | 亚洲高清视频在线观看免费 | 中文字幕一区二区三区在线播放 | 91精品国产乱码在线观看 | 久久久免费视频播放 | 国产原创av在线 | 国产精品99久久久精品免费观看 | 国产成人黄色 | 91视频在线免费 | 久久综合久久综合这里只有精品 | 97超碰免费在线 | 欧美a视频在线观看 | 天天射日 | 国产精品正在播放 | 992tv成人免费看片 | 韩国av一区二区三区在线观看 | 欧美国产日韩一区 | 青青看片| 日韩视频一区二区在线观看 | 欧美精品免费视频 | 亚洲自拍av在线 | 精品一区二区在线免费观看 | 天天色天天骑天天射 | 激情五月色播五月 | 中文字幕第| 中文字幕在线观看av | 久久er99热精品一区二区三区 | 97在线观看免费高清 | 国产成人免费精品 | 国产品久精国精产拍 | 精品国产成人 | 成在线播放 | 爱色av.com | 国产精品综合久久久 | 2017狠狠干| 久久91网| 日韩精品免费在线 | 色在线最新 | 婷婷九月激情 | 欧美日韩成人一区 | 亚洲国产成人高清精品 | 久久玖| 九九亚洲视频 | 99久久综合精品五月天 | 日韩高清成人在线 | 国产黄 | 久久色在线播放 | 最近中文字幕免费av | 欧美一级免费在线 | 韩国三级一区 | 人人爽人人爽人人爽 | 日韩成人免费在线观看 | 成人免费91 | 亚洲精品乱码久久久久久高潮 | 久久精品国产免费 | 午夜私人影院 | 亚洲精品视频第一页 | 特级黄色视频毛片 | 成人亚洲精品国产www | 97在线播放视频 | 一区二区三区精品在线视频 | 91黄色成人| 色视频在线免费观看 | 日韩夜夜爽 | 亚洲激情婷婷 | 亚洲男人天堂2018 | 美女视频是黄的免费观看 | 精品日韩视频 | 成年人在线免费看片 | 精品乱码一区二区三四区 | 天天色天天射天天干 | 最近中文字幕在线播放 | 91免费版成人| 麻豆 91 在线| 国产一级二级三级在线观看 | 亚洲三级黄色 | 91网免费看 | 黄色毛片在线看 | 午夜999 | 开心激情网五月天 | 天堂网一区二区三区 | 欧美高清成人 | 成人av免费 | 精品国内自产拍在线观看视频 | 91porny九色在线播放 | 国产伦精品一区二区三区四区视频 | 97国产 | 九九九九热精品免费视频点播观看 | 午夜在线免费观看 | 国产亚洲视频在线观看 | 草久中文字幕 | 天天操天天舔天天干 | 狠狠的日| 97色综合| 一区二区三区国产欧美 | 激情综合五月婷婷 | 日韩免费成人 | 中文字幕丝袜制服 | 69久久99精品久久久久婷婷 | 亚洲夜夜综合 | 麻豆免费在线视频 | 在线观看免费成人av | 婷婷色九月 | 欧美激情综合网 | 91久久久久久久一区二区 | 国产高清视频在线播放一区 | 国产精品美女免费看 | 国产精品毛片网 | 中文字幕电影高清在线观看 | 黄色一区二区在线观看 | 精品国产伦一区二区三区观看说明 | 婷婷爱五月天 | 99久久精品国产免费看不卡 | 四川bbb搡bbb爽爽视频 | 天天插天天干 | 在线播放日韩av | 精品成人a区在线观看 | 国产精品v a免费视频 | 美女视频黄是免费的 | 国产精品永久免费观看 | 热久精品 | 亚洲视频每日更新 | 亚洲精品在线电影 | 99久久9| 97国产在线观看 | 国产系列在线观看 | 国内精品久久久久影院日本资源 | 99久久电影 | 中文字幕在线有码 | 丁香花在线视频观看免费 | 五月婷丁香网 | 天堂资源在线观看视频 | 国产日韩一区在线 | 国产1区在线观看 | 日韩大片在线免费观看 | 久久久久一区二区三区四区 | 激情黄色av | 久久国产经典 | 99精品在线直播 | 91色亚洲| 黄色亚洲精品 | 狠狠色丁香久久婷婷综合五月 | 欧美精品久久久久性色 | 欧美性生爱 | 日本久久久亚洲精品 | a视频在线 | 久草免费在线观看 | 成人观看视频 | 国产黄色在线网站 | 色九九视频 | 久久国产美女视频 | 天天射天天爱天天干 | 六月色婷| 九九热re| 日韩av在线看 | 国产精品成人一区二区三区吃奶 | 午夜av剧场 | 91亚洲精品乱码久久久久久蜜桃 | 久草视频精品 | av大全在线 | 在线国产视频一区 | 亚洲闷骚少妇在线观看网站 | 国产一区二区综合 | 三级av网站 | 日日干天夜夜 | 国产小视频精品 | aaawww| 99爱爱| 在线观看精品视频 | 国产999视频在线观看 | 四川bbb搡bbb爽爽视频 | 天天爽夜夜爽人人爽曰av | 97视频中文字幕 | 射射射综合网 | 国产女人免费看a级丨片 | 亚洲高清视频在线播放 | 亚洲成av人片在线观看无 | 日本在线h | 久久人人添人人爽添人人88v | 夜夜躁狠狠躁 | 中文乱码视频在线观看 | 精品久久福利 | 亚洲精区二区三区四区麻豆 | 亚洲精品视频免费在线观看 | adc在线观看| 国产精品免费观看视频 | 伊人狠狠操 | 久久a热6| a久久久久久| 日韩欧在线 | 天堂av在线中文在线 | 色婷婷久久一区二区 | 久久精品99国产国产精 | 91九色视频观看 | 中文字幕在线影院 | 久久超碰免费 | 国产在线污 | 日韩中文字幕免费看 | 亚洲高清视频在线观看 | 国产成人精品久久 | 亚洲 欧美 综合 在线 精品 | 国产精品免费在线播放 | 麻豆久久精品 | 91最新视频 | 国产成人精品区 | 婷婷国产精品 | 亚洲精品乱码久久久久久按摩 | 日韩影视在线观看 | 中文字幕第一页在线播放 | 婷婷综合影院 | 91视频免费播放 | 精品久久久久免费极品大片 | 久草视频在线免费看 | 黄色三级免费看 | 97人人模人人爽人人喊中文字 | 欧美另类美少妇69xxxx | 狠狠躁夜夜躁人人爽超碰91 | 韩国三级av在线 | 国产 成人 久久 | 97精品国产91久久久久久 | 精品视频专区 | 国产精品高清在线观看 | 免费观看性生交 | 这里有精品在线视频 | 国产成人三级在线播放 | 久久免费视频6 | 永久免费精品视频网站 | 一区二区激情视频 | 国产精品久久久久久久av大片 | 国产亚洲成人精品 | 日韩免费视频播放 | 亚洲一片黄| 超碰在线人人爱 | 国内精品久久久久久久久久久 | 在线а√天堂中文官网 | 超碰公开在线观看 | 日韩欧美电影 | 视频国产 | 欧美夫妻生活视频 | 国产高清免费视频 | 97人人人| 国产精品乱码久久久久 | 色五丁香 | 久久综合精品一区 | 五月天久久精品 | 久久不射电影网 | 精品在线视频一区二区三区 | 久久99久久精品 | 五月天狠狠操 | 97超在线视频 | 蜜桃视频日韩 | 国产成人精品一区二区三区 | 国产成人性色生活片 | 国产精品视频免费看 | 五月婷婷六月综合 | 久久嗨 | 久久久久久麻豆 | 狠狠色香婷婷久久亚洲精品 | 日韩电影在线观看一区二区 | 国产香蕉久久精品综合网 | 亚洲草视频| 国产亚洲观看 | 五月婷婷丁香六月 | 精品久久一二三区 | 久久亚洲二区 | 色播六月天 | 一级性生活片 | 中文字幕日韩在线播放 | 国产91丝袜在线播放动漫 | 一区二区三区电影 | 日韩免费大片 | 成人一区二区三区在线 | 91av在线精品| 蜜桃视频在线视频 | 国产在线观看免费观看 | 黄色一级影院 | 日韩精品一区二区不卡 | 一区二精品 | 成人xxxx| 爱色av.com | 五月精品| 国产精品久久久久久久久久99 | 国产视频中文字幕在线观看 | 欧美日韩精品区 | 亚洲在线a | 狠狠躁18三区二区一区ai明星 | 区一区二区三区中文字幕 | 国产999精品久久久久久麻豆 | 最近更新好看的中文字幕 | 成人久久18免费网站 | 婷婷久月| 在线视频麻豆 | 久久精品视频在线看 | 欧美日韩免费一区 | 久久久久久久久久久福利 | 99视频在线观看视频 | 日日爱av| 2019中文字幕网站 | 欧美久草网 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 国产艹b视频 | 97看片网 | av天天澡天天爽天天av | 亚洲爱爱视频 | 黄色中文字幕 | 国产精品99久久久久久有的能看 | 91桃色国产在线播放 | 色偷偷88888欧美精品久久久 | 中文字幕在线影视资源 | 久久五月婷婷丁香 | 国产精品专区在线观看 | 国产成人av | 国产精选在线观看 | 最近中文字幕在线 | 91九色免费视频 | 狠色狠色综合久久 | 精品国产一区二区久久 | 亚洲经典视频 | 久久综合中文字幕 | 操操综合网| 成人在线电影观看 | 久久精品国产免费看久久精品 | 九九天堂 | 伊人婷婷久久 | 少妇搡bbb | 国产精品久久一区二区三区, | 久久黄网站 | 中文字幕一区二区三区四区在线视频 | 在线播放亚洲 | 国产呻吟在线 | 玖玖在线播放 | 国产日韩欧美在线 | 国产精品久久久久久久久久久久久 | 国产精品毛片久久久久久久 | 亚洲精品免费在线视频 | 国产精品18久久久久久vr | 亚洲精品一区中文字幕乱码 | 久久国产精品99久久久久久进口 | 国产综合小视频 | 999久久久久久久久 69av视频在线观看 | 91高清免费 | 在线免费观看国产视频 | 国产一级片直播 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产 在线 高清 精品 | 国产99免费视频 | 国产小视频在线免费观看 | 国产成人精品亚洲a | 亚洲一区二区三区在线看 | av电影在线播放 | 992tv在线观看 | 中文字幕之中文字幕 | 日韩精品专区在线影院重磅 | 国产午夜激情视频 | 久久免费视屏 | 手机在线观看国产精品 | 日韩久久精品一区二区三区下载 | 日韩av视屏在线观看 | 最近中文字幕完整高清 | 国产一区二区三精品久久久无广告 | 97碰碰碰| 精品国产一区二区三区久久久蜜臀 | 成年人黄色免费看 | 成人精品99 | av看片在线 | 久久影院中文字幕 | 成年美女黄网站色大片免费看 | 久久久久久久99精品免费观看 | 涩涩成人在线 | 久久精品中文字幕 | 成人一级免费电影 | 激情综合久久 | 高清av影院 | 久久精品五月 | 亚洲mv大片欧洲mv大片免费 | 在线最新av | 日日干日日操 | 91精品网站在线观看 | 久久国产影院 | 丰满少妇在线观看资源站 | 久久免费资源 | 99精品视频免费观看 | 国产精品久久久久久久久久久杏吧 | 日本黄色大片免费 | 亚洲综合情 | 激情视频在线观看网址 | 麻豆久久久久 | 丁香av在线 | 精品a视频 | 日日夜夜爱| 久久国产精品免费观看 | 奇米777777| 精品久久国产 | av一级久久 | 精品欧美一区二区精品久久 | 久久免费在线视频 | 日韩专区视频 | 69av视频在线观看 | 国产高清无线码2021 | 日韩欧美网站 | 蜜臀久久99静品久久久久久 | 日韩av电影中文字幕在线观看 | 色黄视频免费观看 | 久久综合网色—综合色88 | 少妇bbbb | 亚洲国产精品电影 | 日韩视频一| 欧美日韩另类视频 | a级国产乱理论片在线观看 特级毛片在线观看 | 91福利小视频 | 国产精品久久久一区二区 | 国产精品美女久久久久久久久久久 | 国产伦理一区二区三区 | 91九色在线播放 | 中文字幕 国产专区 | av中文资源在线 | 中文字幕在线网址 | 国产精品少妇 | 深夜视频久久 | 亚洲精品在线播放视频 | 天堂av免费 | 亚洲一级性| 欧美福利网址 | 久精品在线 |