返回顶部
首页 > 资讯 > 后端开发 > Python >python调用bash shell脚本的方法是什么
  • 466
分享到

python调用bash shell脚本的方法是什么

2023-06-22 06:06:04 466人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章为大家展示了python调用bash shell脚本的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. os.system()help(os.system)1.1. d

本篇文章为大家展示了python调用bash shell脚本的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1. os.system()

help(os.system)

1.1. demo

  • os.system(command):该方法在调用完shell脚本后,返回一个16位的二进制数,

  • 低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,

  • 即脚本中exit 1的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,

  • 则函数的返回值是0x0100,换算为十进制得到256。

  • 要获得os.system的正确返回值,可以使用位移运算(将返回值右移8位)还原返回值:

>>> import os>>> os.system("./test.sh")hello Python!hello world!256>>> n>>81

2. os.popen()

help(os.system)

2.1 demo

os.popen(command):这种调用方式是通过管道的方式来实现,函数返回一个file对象,
里面的内容是脚本输出的内容(可简单理解为echo输出的内容),使用os.popen调用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),其以字符串的形式返回的是输出结果和状态码,即(status,output)。

  • (2)commands.getoutput(cmd),返回cmd的输出结果。

  • (3)commands.getstatus(file),返回ls -l file的执行结果字符串,调用了getoutput,不建议使用此方法

4. subprocess

subprocess模块,允许创建很多子进程,创建的时候能指定子进程和子进程的输入、输出、错误输出管道,执行后能获取输出结果和执行状态。

  • (1)subprocess.run():python3.5中新增的函数, 执行指定的命令, 等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。

  • (2)subprocess.call():执行指定的命令, 返回命令执行状态, 功能类似os.system(cmd)。

  • (3)subprocess.check_call():python2.5中新增的函数, 执行指定的命令, 如果执行成功则返回状态码, 否则抛出异常。

说明: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。否则默认已数组形式表示shell变量,如"ls”,"-l"。
当使用比较复杂的shell语句时,可以先使用shlex模块的shlex.split()方法来帮助格式化命令,然后在传递给run()方法或Popen

4.1 demo

Stubs for subprocessBased on Http://docs.python.org/2/library/subprocess.html and Python 3 stubfrom 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 stdoutdef 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: intSTDOUT = ... # type: intclass 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: AnySTD_OUTPUT_HANDLE = ... # type: AnySTD_ERROR_HANDLE = ... # type: AnySW_HIDE = ... # type: AnySTARTF_USESTDHANDLES = ... # type: AnySTARTF_USESHOWWINDOW = ... # type: AnyCREATE_NEW_CONSOLE = ... # type: AnyCREATE_NEW_PROCESS_GROUP = ... # type: Any

上述内容就是python调用bash shell脚本的方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网Python频道。

--结束END--

本文标题: python调用bash shell脚本的方法是什么

本文链接: https://lsjlt.com/news/303103.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python调用bash shell脚本的方法是什么
    本篇文章为大家展示了python调用bash shell脚本的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. os.system()help(os.system)1.1. d...
    99+
    2023-06-22
  • python调用bash shell脚本方法
    目录1. os.system()1.1. demo2. os.popen()2.1 demo3. commands模块4. subprocess4.1 demo1. os.syste...
    99+
    2024-04-02
  • nginx调用shell脚本的方法是什么
    在 Nginx 中调用 shell 脚本有多种方法,以下是其中的一些常用方法:1. 使用 Nginx 的 `ngx_http_she...
    99+
    2023-09-22
    nginx shell
  • golang调用shell脚本的方法是什么
    在Go语言中,可以使用os/exec包来调用shell脚本。 下面是一个示例代码: package main import ( ...
    99+
    2024-02-29
    golang shell
  • Bash Shell脚本中数组的使用方法
    这篇文章主要介绍“Bash Shell脚本中数组的使用方法”,在日常操作中,相信很多人在Bash Shell脚本中数组的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Bash Shell脚本中数组的使...
    99+
    2023-06-17
  • java中调用shell脚本的方法
    java中调用shell脚本的方法:1、在java项目中能够通过ProcessBuilder进行调度shell脚本,参数设置相对简单;2、还能够通过系统Runtime执行shell脚本,但在参数设置上需要添加空格将两个参数分开。具体内容如下...
    99+
    2024-04-02
  • shell脚本加密的方法是什么
    一种常见的方法是使用工具将shell脚本转换为可执行文件,从而实现加密。这样做可以防止他人直接查看脚本的内容,但并不能完全避免破解。...
    99+
    2024-03-02
    shell
  • Shell脚本调用另一个脚本的三种方法
    假如有脚本 first.sh: #!/bin/bash #------------------ #@file:first.sh #------------------ echo 'your are in first ...
    99+
    2022-06-04
    shell 脚本 shell 脚本调用 shell 脚本调用其他脚本
  • linux编写shell脚本的方法是什么
    编写Linux shell脚本有以下几个步骤:1. 选择shell:Linux有多种shell,如Bash、sh、csh等。其中Ba...
    99+
    2023-09-17
    linux shell
  • python异步调用shell的方法是什么
    在Python中,可以使用`subprocess`模块来创建和管理子进程,以及执行外部命令。`subprocess`模块提供了多种方...
    99+
    2023-09-22
    python shell
  • Pig中调试脚本的方法是什么
    在Pig中调试脚本的方法有以下几种: 使用DESCRIBE命令查看数据表的结构和模式,确保输入数据和预期的一致。 使用DUMP命令...
    99+
    2024-04-02
  • Bash脚本内置的调试方法技巧
    用 Bash 写的脚本也可以进行调试,和 Python,Perl 等解释型语言一样。新建一个名为 servinfo 的脚本并增加可执行权限: $ vi servinfo #!/bin/bash echo ...
    99+
    2022-06-04
    脚本 技巧 方法
  • 调用Python脚本基本应用方式分别是什么
    调用Python脚本基本应用方式分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在编程人员需要选择一种合适的计算机语言进行程序开发时,他们脑海中往往会出现Pytho...
    99+
    2023-06-17
  • Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
    每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见http://nodejs.org/api/child...
    99+
    2022-06-04
    脚本 实例 命令
  • shell中如何调用python脚本
    要在shell中调用Python脚本,可以使用以下命令:```python script.py```其中,`python`是Pyth...
    99+
    2023-10-10
    shell python
  • Shell脚本里调用Python程序
    脚本背景:主管要求看门狗程序不仅仅只是看门,还要在看门成功的时候发送邮件给各个开发人员,而且必须要用公司原有的python程序作为发送邮件的主程序,所以需要在原有的看门狗程序上加一句话,而这个看门狗程序恰恰是shell程序,两种不同程序混搭...
    99+
    2023-01-31
    脚本 程序 Shell
  • 用内置变量调试shell脚本的方法
    一般的shell脚本的调试基本都是echo 来处理遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了。其实shell内置的一些变量可以很好的解决这个问题: $LINENO $F...
    99+
    2022-06-04
    变量 脚本 方法
  • shell中循环调用hive sql 脚本的方法
    脚本tt.sh的内容如下: #!/bin/bash params=$1 for param in $params do eceqQgxvIqOHho $param done 运行方式为:sh tt.sh "...
    99+
    2022-06-04
    shell 循环调用 hive sql
  • 有哪些Bash脚本内置的调试方法
    本篇内容介绍了“有哪些Bash脚本内置的调试方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用 Bash 写的脚本也可以进行调试,和 Py...
    99+
    2023-06-09
  • python脚本执行的方法是什么
    Python脚本可以通过以下几种方法来执行:1. 在命令行中执行:可以直接在命令行中输入"python 脚本文件.py"来执行脚本文...
    99+
    2023-10-19
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作