• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    python中subprocess批量執行linux命令

    來源:懂視網 責編:小采 時間:2020-11-27 14:21:52
    文檔

    python中subprocess批量執行linux命令

    python中subprocess批量執行linux命令:本篇文章給大家詳細講述了python中使用subprocess批量執行linux命令的方法,有興趣的朋友參考學習下。可以執行shell命令的相關模塊和函數有:os.systemos.spawnos.popen --廢棄popen --廢棄commands --廢棄,3.x中被移除以上執行shell命令
    推薦度:
    導讀python中subprocess批量執行linux命令:本篇文章給大家詳細講述了python中使用subprocess批量執行linux命令的方法,有興趣的朋友參考學習下。可以執行shell命令的相關模塊和函數有:os.systemos.spawnos.popen --廢棄popen --廢棄commands --廢棄,3.x中被移除以上執行shell命令

    本篇文章給大家詳細講述了python中使用subprocess批量執行linux命令的方法,有興趣的朋友參考學習下。

    可以執行shell命令的相關模塊和函數有:

  • os.system

  • os.spawn

  • os.popen --廢棄

  • popen --廢棄

  • commands --廢棄,3.x中被移除

  • 以上執行shell命令的相關的模塊和函數的功能均在 subprocess 模塊中實現,并提供了更豐富的功能。

    subprocess

    call

    執行命令,返回狀態碼

    >>> import subprocess
    >>> ret = subprocess.call(["ls", "-l"], shell=False)
    total 4684
    -rw-r--r-- 1 root root 454 May 5 12:20 aa.py
    -rw-r--r-- 1 root root 0 May 8 16:51 aa.txt
    -rw-r--r-- 1 root root 4783286 Apr 11 16:39 DockerToolbox.exe
    -rw-r--r-- 1 root root 422 May 5 12:20 ip_info.txt
    -rw-r--r-- 1 root root 718 Apr 19 10:52 my.cnf
    >>> ret = subprocess.call("ls -l", shell=True)
    total 4684
    -rw-r--r-- 1 root root 454 May 5 12:20 aa.py
    -rw-r--r-- 1 root root 0 May 8 16:51 aa.txt
    -rw-r--r-- 1 root root 4783286 Apr 11 16:39 DockerToolbox.exe
    -rw-r--r-- 1 root root 422 May 5 12:20 ip_info.txt
    -rw-r--r-- 1 root root 718 Apr 19 10:52 my.cnf
    >>> print(ret)
    0

    check_call

    執行命令,如果執行狀態碼是 0 ,則返回0,否則拋異常

    >>> subprocess.check_call(["ls", "-l"])
    total 4684
    -rw-r--r-- 1 root root 454 May 5 12:20 aa.py
    -rw-r--r-- 1 root root 0 May 8 16:51 aa.txt
    -rw-r--r-- 1 root root 4783286 Apr 11 16:39 DockerToolbox.exe
    -rw-r--r-- 1 root root 422 May 5 12:20 ip_info.txt
    -rw-r--r-- 1 root root 718 Apr 19 10:52 my.cnf
    0
    >>> subprocess.check_call("exit 1", shell=True)
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     File "/usr/local/python3.5/lib/python3.5/subprocess.py", line 581, in check_call
     raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1

    check_output

    執行命令,如果狀態碼是 0 ,則返回執行結果,否則拋異常

    >>> subprocess.check_output(["echo", "Hello World!"])
    b'Hello World!
    '
    >>> subprocess.check_output("exit 1", shell=True)
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     File "/usr/local/python3.5/lib/python3.5/subprocess.py", line 626, in check_output
     **kwargs).stdout
     File "/usr/local/python3.5/lib/python3.5/subprocess.py", line 708, in run
     output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1

    subprocess.Popen(...)

    用于執行復雜的系統命令

    參數:

    args:shell命令,可以是字符串或者序列類型(如:list,元組)

    bufsize:指定緩沖。0 無緩沖,1 行緩沖,其他 緩沖區大小,負值 系統緩沖

    stdin, stdout, stderr:分別表示程序的標準輸入、輸出、錯誤句柄

    preexec_fn:只在Unix平臺下有效,用于指定一個可執行對象(callable object),它將在子進程運行之前被調用

    close_sfs:在windows平臺下,如果close_fds被設置為True,則新創建的子進程將不會繼承父進程的輸入、輸出、錯誤管道。

    所以不能將close_fds設置為True同時重定向子進程的標準輸入、輸出與錯誤(stdin, stdout, stderr)。

    shell:同上

    cwd:用于設置子進程的當前目錄

    env:用于指定子進程的環境變量。如果env = None,子進程的環境變量將從父進程中繼承。

    universal_newlines:不同系統的換行符不同,True -> 同意使用 n

    startupinfo與createionflags只在windows下有效

    將被傳遞給底層的CreateProcess()函數,用于設置子進程的一些屬性,如:主窗口的外觀,進程的優先級等等

    執行普通命令

    >>> import subprocess
    >>> ret1 = subprocess.Popen(["mkdir","t1"])
    >>> ret2 = subprocess.Popen("mkdir t2", shell=True)
    >>> print(ret1)
    <subprocess.Popen object at 0x7f4d7609dd30>
    >>> print(ret2)
    <subprocess.Popen object at 0x7f4d7609dc18>

    終端輸入的命令分為兩種:

  • 輸入即可得到輸出,如:ifconfig

  • 輸入進行某環境,依賴再輸入,如:python

  • >>> import subprocess
    >>> obj = subprocess.Popen("mkdir t3", shell=True, cwd='/tmp/',)
    >>> import subprocess
    >>> obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
    >>> obj.stdin.write("print(1)
    ")
    9
    >>> obj.stdin.write("print(2)")
    8
    >>> obj.stdin.close()
    >>> cmd_out = obj.stdout.read()
    >>> obj.stdout.close()
    >>> cmd_error = obj.stderr.read()
    >>> obj.stderr.close()
    >>> print(cmd_out)
    1
    2
    >>> print(cmd_error)
    >>> import subprocess
    >>> 
    >>> obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
    >>> obj.stdin.write("print(1)
    ")
    9
    >>> obj.stdin.write("print(2)")
    8
    >>> 
    >>> out_error_list = obj.communicate()
    >>> print(out_error_list)
    ('1
    2
    ', '')
    >>> obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
    >>> out_error_list = obj.communicate('print("hello")')
    >>> print(out_error_list)
    ('hello
    ', '')

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    python中subprocess批量執行linux命令

    python中subprocess批量執行linux命令:本篇文章給大家詳細講述了python中使用subprocess批量執行linux命令的方法,有興趣的朋友參考學習下。可以執行shell命令的相關模塊和函數有:os.systemos.spawnos.popen --廢棄popen --廢棄commands --廢棄,3.x中被移除以上執行shell命令
    推薦度:
    標簽: 如何 linux 命令
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品VA在线观看无码不卡| 国产精品电影在线观看| 国产精品久线在线观看| 青草国产精品视频。| 热久久这里只有精品| 久久亚洲欧美国产精品| 欧美日韩国产精品自在自线| 99久re热视频这里只有精品6| 国自产偷精品不卡在线| 中文字幕精品一区| 欧美在线精品一区二区三区 | 国产福利精品在线观看| 91精品视频网站| 日韩欧精品无码视频无删节| 日韩精品无码免费视频| 国内精品国语自产拍在线观看| 亚洲国产精品人久久| 国内精品手机在线观看视频| 国产精品无码成人午夜电影| 久久久免费精品re6| 人妻精品久久久久中文字幕一冢本| 夜夜精品无码一区二区三区| 欧美国产精品va在线观看| 精品国产不卡一区二区三区| 国产精品麻豆入口| 国产精品视频一区二区三区不卡| 国内精品九九久久久精品| 无码日韩人妻精品久久蜜桃 | 国产在线精品无码二区| 亚洲AV无码精品无码麻豆| 亚洲国产精品第一区二区三区| 欧美午夜精品一区二区三区91| 久夜色精品国产一区二区三区| 久久青青草原精品国产软件| 久久精品成人欧美大片| 国产精品一区二区久久精品无码| 国产成人精品久久一区二区三区av| 国产精品福利在线播放| 久久精品国产亚洲网站| 香蕉国产精品频视| 国产成人亚洲精品91专区手机|