欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python調(diào)用bash?shell腳本方法

 更新時(shí)間:2022年01月25日 13:19:33   作者:maxwell-ma  
這篇文章主要給大家分享了額python調(diào)用bash?shell腳本方法,os.system(command)、os.popen(command)等方法,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對你有所幫助

1. os.system()

help(os.system)

1.1. demo

  • os.system(command):該方法在調(diào)用完shell腳本后,返回一個(gè)16位的二進(jìn)制數(shù),
  • 低位為殺死所調(diào)用腳本的信號號碼,高位為腳本的退出狀態(tài)碼,
  • 即腳本中exit 1的代碼執(zhí)行后,os.system函數(shù)返回值的高位數(shù)則是1,如果低位數(shù)是0的情況下,
  • 則函數(shù)的返回值是0x0100,換算為十進(jìn)制得到256。
  • 要獲得os.system的正確返回值,可以使用位移運(yùn)算(將返回值右移8位)還原返回值:
>>> import os
>>> os.system("./test.sh")
hello python!
hello world!
256
>>> n>>8
1

2. os.popen()

help(os.system)

2.1 demo

os.popen(command):這種調(diào)用方式是通過管道的方式來實(shí)現(xiàn),函數(shù)返回一個(gè)file對象,
里面的內(nèi)容是腳本輸出的內(nèi)容(可簡單理解為echo輸出的內(nèi)容),使用os.popen調(diào)用test.sh的情況

>> import os
>>> os.popen("./test.sh")
<open file './test.sh', mode 'r' at 0x7f6cbbbee4b0>
>>> f=os.popen("./test.sh")
>>> f
<open file './test.sh', mode 'r' at 0x7f6cbbbee540>
>>> f.readlines()
['hello python!\n', 'hello world!\n']

3. commands模塊

  • (1)commands.getstatusoutput(cmd),其以字符串的形式返回的是輸出結(jié)果和狀態(tài)碼,即(status,output)。
  • (2)commands.getoutput(cmd),返回cmd的輸出結(jié)果。
  • (3)commands.getstatus(file),返回ls -l file的執(zhí)行結(jié)果字符串,調(diào)用了getoutput,不建議使用此方法

4. subprocess

subprocess模塊,允許創(chuàng)建很多子進(jìn)程,創(chuàng)建的時(shí)候能指定子進(jìn)程和子進(jìn)程的輸入、輸出、錯(cuò)誤輸出管道,執(zhí)行后能獲取輸出結(jié)果和執(zhí)行狀態(tài)。

  • (1)subprocess.run():python3.5中新增的函數(shù), 執(zhí)行指定的命令, 等待命令執(zhí)行完成后返回一個(gè)包含執(zhí)行結(jié)果的CompletedProcess類的實(shí)例。
  • (2)subprocess.call():執(zhí)行指定的命令, 返回命令執(zhí)行狀態(tài), 功能類似os.system(cmd)。
  • (3)subprocess.check_call():python2.5中新增的函數(shù), 執(zhí)行指定的命令, 如果執(zhí)行成功則返回狀態(tài)碼, 否則拋出異常。

說明: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)

args:表示shell指令,若以字符串形式給出shell指令,如"ls -l “則需要使shell = Ture。否則默認(rèn)已數(shù)組形式表示shell變量,如"ls”,"-l"。
當(dāng)使用比較復(fù)雜的shell語句時(shí),可以先使用shlex模塊的shlex.split()方法來幫助格式化命令,然后在傳遞給run()方法或Popen。

4.1 demo

Stubs for subprocess

Based on http://docs.python.org/2/library/subprocess.html and Python 3 stub

from typing import Sequence, Any, Mapping, Callable, Tuple, IO, Union, Optional, List, Text

_FILE = Union[None, int, IO[Any]]
_TXT = Union[bytes, Text]
_CMD = Union[_TXT, Sequence[_TXT]]
_ENV = Union[Mapping[bytes, _TXT], Mapping[Text, _TXT]]

# Same args as Popen.__init__
def call(args: _CMD,
     bufsize: int = ...,
     executable: _TXT = ...,
     stdin: _FILE = ...,
     stdout: _FILE = ...,
     stderr: _FILE = ...,
     preexec_fn: Callable[[], Any] = ...,
     close_fds: bool = ...,
     shell: bool = ...,
     cwd: _TXT = ...,
     env: _ENV = ...,
     universal_newlines: bool = ...,
     startupinfo: Any = ...,
     creationflags: int = ...) -> int: ...

def check_call(args: _CMD,
        bufsize: int = ...,
        executable: _TXT = ...,
        stdin: _FILE = ...,
        stdout: _FILE = ...,
        stderr: _FILE = ...,
        preexec_fn: Callable[[], Any] = ...,
        close_fds: bool = ...,
        shell: bool = ...,
        cwd: _TXT = ...,
        env: _ENV = ...,
        universal_newlines: bool = ...,
        startupinfo: Any = ...,
        creationflags: int = ...) -> int: ...

# Same args as Popen.__init__ except for stdout
def check_output(args: _CMD,
         bufsize: int = ...,
         executable: _TXT = ...,
         stdin: _FILE = ...,
         stderr: _FILE = ...,
         preexec_fn: Callable[[], Any] = ...,
         close_fds: bool = ...,
         shell: bool = ...,
         cwd: _TXT = ...,
         env: _ENV = ...,
         universal_newlines: bool = ...,
         startupinfo: Any = ...,
         creationflags: int = ...) -> bytes: ...

PIPE = ... # type: int
STDOUT = ... # type: int

class CalledProcessError(Exception):
  returncode = 0
  # morally: _CMD
  cmd = ... # type: Any
  # morally: Optional[bytes]
  output = ... # type: Any

  def __init__(self,
         returncode: int,
         cmd: _CMD,
         output: Optional[bytes] = ...) -> None: ...

class Popen:
  stdin = ... # type: Optional[IO[Any]]
  stdout = ... # type: Optional[IO[Any]]
  stderr = ... # type: Optional[IO[Any]]
  pid = 0
  returncode = 0

  def __init__(self,
         args: _CMD,
         bufsize: int = ...,
         executable: Optional[_TXT] = ...,
         stdin: Optional[_FILE] = ...,
         stdout: Optional[_FILE] = ...,
         stderr: Optional[_FILE] = ...,
         preexec_fn: Optional[Callable[[], Any]] = ...,
         close_fds: bool = ...,
         shell: bool = ...,
         cwd: Optional[_TXT] = ...,
         env: Optional[_ENV] = ...,
         universal_newlines: bool = ...,
         startupinfo: Optional[Any] = ...,
         creationflags: int = ...) -> None: ...

  def poll(self) -> int: ...
  def wait(self) -> int: ...
  # morally: -> Tuple[Optional[bytes], Optional[bytes]]
  def communicate(self, input: Optional[_TXT] = ...) -> Tuple[Any, Any]: ...
  def send_signal(self, signal: int) -> None: ...
  def terminate(self) -> None: ...
  def kill(self) -> None: ...
  def __enter__(self) -> 'Popen': ...
  def __exit__(self, type, value, traceback) -> bool: ...

# Windows-only: STARTUPINFO etc.

STD_INPUT_HANDLE = ... # type: Any
STD_OUTPUT_HANDLE = ... # type: Any
STD_ERROR_HANDLE = ... # type: Any
SW_HIDE = ... # type: Any
STARTF_USESTDHANDLES = ... # type: Any
STARTF_USESHOWWINDOW = ... # type: Any
CREATE_NEW_CONSOLE = ... # type: Any
CREATE_NEW_PROCESS_GROUP = ... # type: Any

到此這篇關(guān)于python調(diào)用bash shell腳本方法的文章就介紹到這了,更多相關(guān)python調(diào)用bash shell腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用pyshp讀寫shp文件的實(shí)現(xiàn)

    python使用pyshp讀寫shp文件的實(shí)現(xiàn)

    本文主要介紹了python使用pyshp讀寫shp文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python實(shí)現(xiàn)大文本文件分割成多個(gè)小文件

    python實(shí)現(xiàn)大文本文件分割成多個(gè)小文件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)大文本文件分割成多個(gè)小文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • opencv+python實(shí)現(xiàn)均值濾波

    opencv+python實(shí)現(xiàn)均值濾波

    這篇文章主要為大家詳細(xì)介紹了opencv+python實(shí)現(xiàn)均值濾波,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Python實(shí)現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作示例

    Python實(shí)現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作,涉及Python基于先序遍歷和中序遍歷構(gòu)造二叉樹,再后序遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • python matplotlib庫直方圖繪制詳解

    python matplotlib庫直方圖繪制詳解

    這篇文章主要介紹了python matplotlib庫直方圖繪制詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python中列表索引 A[ : 2 ]與A[ : , 2]的區(qū)別說明

    Python中列表索引 A[ : 2 ]與A[ : ,&nb

    這篇文章主要介紹了Python中列表索引 A[ : 2 ]與A[ : , 2]的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 利用python爬取斗魚app中照片方法實(shí)例

    利用python爬取斗魚app中照片方法實(shí)例

    最近在學(xué)習(xí)python,通過實(shí)踐是學(xué)習(xí)的一個(gè)好辦法,下面這篇文章就來給大家介紹了關(guān)于利用python爬取斗魚app中照片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來一起看看吧。
    2017-12-12
  • 一文教你如何使用Python繪制瀑布圖

    一文教你如何使用Python繪制瀑布圖

    什么是瀑布圖?瀑布圖用表達(dá)兩個(gè)數(shù)值之間的變化過程,過程值為正的時(shí)候,向上加,過程值為負(fù)的時(shí)候向下減。本文就帶大家學(xué)習(xí)一下如何用Python繪制瀑布圖吧
    2023-04-04
  • Python 字典與字符串的互轉(zhuǎn)實(shí)例

    Python 字典與字符串的互轉(zhuǎn)實(shí)例

    下面小編就為大家?guī)硪黄狿ython 字典與字符串的互轉(zhuǎn)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Python中包的用法及安裝

    Python中包的用法及安裝

    在本篇文章里小編給大家整理的是關(guān)于Python中一些包的基本用處和安裝方法,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02

最新評論