返回顶部
首页 > 资讯 > 后端开发 > Python >Python标准库 - subproce
  • 779
分享到

Python标准库 - subproce

标准Pythonsubproce 2023-01-31 01:01:25 779人浏览 泡泡鱼

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

摘要

编写python脚本时, 经常要执行linux操作系统命令, 如mkdir zzzz. 目前比较推荐的方法是使用subprocess模块.通过该模块的帮助文档, 可看到其主要提供了4个api, 和相应的使用说明.Main API======


编写python脚本时, 经常要执行linux操作系统命令, 如mkdir zzzz. 目前比较推荐的方法是使用subprocess模块.



通过该模块的帮助文档, 可看到其主要提供了4个api, 和相应的使用说明.


Main API

========

call(...): Runs a command, waits for it to complete, then returns

    the return code.

check_call(...): Same as call() but raises CalledProcessError()

    if return code is not 0

check_output(...): Same as check_call() but returns the contents of

    stdout instead of a return code

Popen(...): A class for flexibly executing a command in a new process



结合API的说明来看, 若执行简单的命令, 像前面所说mkdir zzzz, 前三个API都可以, 只是处理细节稍有不同.


In [54]: subprocess.call("mkdir /tmp/zzzz", shell=True)

Out[54]: 0


In [55]: subprocess.call("mkdir /tmp/zzzz", shell=True)

mkdir: cannot create directory `/tmp/zzzz': File exists

Out[55]: 1



In [56]: subprocess.check_call("mkdir /tmp/zzzz", shell=True)

Out[56]: 0


In [57]: subprocess.check_call("mkdir /tmp/zzzz", shell=True)

mkdir: cannot create directory `/tmp/zzzz': File exists

---------------------------------------------------------------------------

CalledProcessError                        Traceback (most recent call last)

<iPython-input-57-2a531671f16e> in <module>()

----> 1 subprocess.check_call("mkdir /tmp/zzzz", shell=True)


/usr/local/python27/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs)

    184         if cmd is None:

    185             cmd = popenargs[0]

--> 186         raise CalledProcessError(retcode, cmd)

    187     return 0

    188


CalledProcessError: Command 'mkdir /tmp/zzzz' returned non-zero exit status 1



In [59]: subprocess.check_output("mkdir /tmp/zzzz", shell=True)

Out[59]: ''


In [60]: subprocess.check_output("mkdir /tmp/zzzz", shell=True)

mkdir: cannot create directory `/tmp/zzzz': File exists

---------------------------------------------------------------------------

CalledProcessError                        Traceback (most recent call last)

<ipython-input-60-4911eea4ecd3> in <module>()

----> 1 subprocess.check_output("mkdir /tmp/zzzz", shell=True)


/usr/local/python27/lib/python2.7/subprocess.pyc in check_output(*popenargs, **kwargs)

    217         if cmd is None:

    218             cmd = popenargs[0]

--> 219         raise CalledProcessError(retcode, cmd, output=output)

    220     return output

    221


CalledProcessError: Command 'mkdir /tmp/zzzz' returned non-zero exit status 1



又若执行复杂的命令或脚本, 需要获取其标准输出, 和标准错误输出, 就要用到Popen接口了. 前三个API, 其实是第四个的简化版, 是将参数直接传给了Popen的构造函数, 不过大部分参数都是保留了默认值, 来看下该构造函数的样子.


def __init__(self, args, bufsize=0, executable=None,

             stdin=None, stdout=None, stderr=None,

             preexec_fn=None, close_fds=False, shell=False,

             cwd=None, env=None, universal_newlines=False,

             startupinfo=None, creationflags=0):


注意参数shell=False, 其含义为, 是否将args(要执行的命令)置于操作系统的shell环境中运行.



下面给出一个代码段, 用到了Popen, 算是对subprocess模块的小结.


#!/usr/bin/env python

# -*- coding: utf-8 -*-


import subprocess


def exec_cmd(cmd):

    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,

                            stderr=subprocess.PIPE, shell=True)


    stdout, stderr = proc.communicate()


    if proc.returncode != 0:

        return proc.returncode, stderr


    return proc.returncode, stdout


def main():

    cmd = "ls -l"

    # cmd = "ls -lz"


    returncode, stdoutdata = exec_cmd(cmd)

    print str(returncode) + " - " + stdoutdata


if __name__ == '__main__':

    main()


--结束END--

本文标题: Python标准库 - subproce

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

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

猜你喜欢
  • Python标准库 - subproce
    编写Python脚本时, 经常要执行Linux操作系统命令, 如mkdir zzzz. 目前比较推荐的方法是使用subprocess模块.通过该模块的帮助文档, 可看到其主要提供了4个API, 和相应的使用说明.Main API======...
    99+
    2023-01-31
    标准 Python subproce
  • python标准库
    Python有一套很有用的标准库(standard library)。标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。 我将根据我个人的使...
    99+
    2023-01-31
    标准 python
  • python标准库--functools
    官方相关地址:https://docs.python.org/3.6/library/functools.html   一.简单介绍:        functools模块用于高阶函数:作用于或返回其他函数的函数。一般而言,任何可调用对象...
    99+
    2023-01-30
    标准 python functools
  • python之标准库
    Python的标准安装包括一组模块,称为标准库。10.1 模块>>>emport math>>>math.sin(0)0.010.1.1 模块是程序任何python程序都可以作为模块导入。#hello.p...
    99+
    2023-01-31
    标准 python
  • Python标准库 - logging
    编写代码时, 常要跟踪下其运行过程, 记录日志是常用的方式. 较简单的就是print命令打印到终端, 或通过open函数写入文件. 但随着代码量的增加, 该方式不可控的弊端, 也凸显出来, 这也正是logging模块出现的背景.对于logg...
    99+
    2023-01-31
    标准 Python logging
  • Python标准库 - re
    编写代码时, 经常要匹配特定字符串, 或某个模式的字符串, 一般会借助字符串函数, 或正则表达式完成.对于正则表达式, 有些字符具有特殊含义, 需使用反斜杠字符'\'转义, 使其表示本身含义. 如想匹配字符'\', 却要写成'\\\\', ...
    99+
    2023-01-31
    标准 Python
  • Python标准库之os
    文章目录 1. OS标准库简介2. OS标准库常用函数和属性2.1 文件和目录2.1.1 `os.getcwd()`2.1.2 `os.mkdir(path, mode=0o777, *, d...
    99+
    2023-09-04
    python linux 标准库 os 常用函数
  • python 标准库大全
    文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串准备工具 readline:GNU...
    99+
    2023-01-31
    标准 大全 python
  • python 标准库简介
    操作系统接口 os 模块提供了许多与操作系统交互的函数: >>> >>> import os >>> os.getcwd() # Return the current ...
    99+
    2023-01-31
    标准 简介 python
  • python常用标准库
    -------------------系统内建函数-------------------1、字符串str='这是一个字符串数据测试数据'对应str[0]:获取str字符串中下标为0的字符。str[3]:获取str字符串中下标为3的字符。st...
    99+
    2023-01-31
    常用 标准 python
  • Python标准库大全
    以下是Python标准库大全 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串准备工具 ...
    99+
    2023-10-26
    python 开发语言
  • python中的标准库html
    目录python之标准库html__init__.py文件提供两个函数:html库中的 entities 模块html库中的 parser 模块python之标准库html html...
    99+
    2024-04-02
  • python标准库--logging模块
    logging模块的几个级别,默认情况下Logging模块有6个级别,代码如下#!/usr/bin/env python # coding: utf-8 __author__ = '...
    99+
    2023-01-30
    模块 标准 python
  • Python标准库之数据库 sqlite3
    目录1、创建数据库 2、插入数据3、查询4、更新与删除Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配P...
    99+
    2024-04-02
  • Python标准库14 数据库 (sqlite3)
    Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。SQLite还在其它领域有广泛的应用,比如HTML5和移动端。Python...
    99+
    2023-06-02
  • python标准库ElementTree处理xml
    目录1. 示例用法Element对象具有如下属性和操作遇到非法格式的xmlExpatError: no element foundExpatError: mismatched tag...
    99+
    2024-04-02
  • 10个常用python标准库
    Python的标准库包含了大量的模块和函数,这些模块和函数为Python提供了丰富的功能和工具。以下是10个常用的Python标准库:os模块:提供了许多与操作系统交互的函数,例如访问文件系统、创建文件夹、获取环境变量等。sys模块:提供了...
    99+
    2023-10-25
    标准库 python
  • Python标准库笔记(11) — Op
    Operator——标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数。有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数。因此operator模块定义了一些函数...
    99+
    2023-01-30
    笔记 标准 Python
  • Python标准库学习之urllib
    本系列以python3.4为基础urllib是Python3的标准网络请求库。包含了网络数据请求,处理cookie,改变请求头和用户代理,重定向,认证等的函数。urllib与urllib2:python2.x用urllib2,而pytho...
    99+
    2023-01-31
    标准 Python urllib
  • 200个Python 标准库总结
    目录1.文本2.数学3.函数式编程4.文件与目录5.持久化6.压缩7.加密8.操作系统工具9.并发10.进程间通信11.互联网12.互联网协议与支持13.多媒体14.国际化15.编程...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作