系统命令

1、call
执行命令,返回状态码

    ret = subprocess.call(['ls', '-l'], shell=False)  ret = subprocess.call('ls -l', shell=True)  

2、check_call
执行命令,如果执行状态码是0,则返回0,否则抛异常

subprocess.check_call(["ls", "-l"])
subprocess.check_call("exit 1", shell=True) 

3、check_output
执行命令,如果状态是0,则返回执行结果,否则抛异常

    subprocess.check_output(["echo", "hello world !"])  subprocess.check_output(["exit 1", shell=True])  

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()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
 

所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin,stdout,stderr)

案例:
import subprocess
ret1 = subprocess.Popen(["mkdir", "t1"])ret2 = subprocess.Popen("mkdir t2", shell=True)

终端输入的命令分为两种:

输入即可得到输出,如:ifconfig
输入进行某环境,依赖在输入,如:python

    import subprocess  obj = subprocess.Popen("mkdir t3", shell=True, cwd='/home/dev')  

    import subprocess  obj = subprocess.Popen(["python"], stdin=dubprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE, universal_newlines=True)  obj.stdin.write("print(1)\n")  obj.stdin.write("print(2)")  obj.stdin.close()  cmd_out = obj.stdout.read()  obj.stdout.close()  cmd_error = obj.stderr.read()  obj.stderr.close()  print(cmd_out)  print(cmd_error)  

View Code

    import subprocess  obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)  obj.stdin.write("print(1)\n")  obj.stdin.write("print(2)")  out_error_list = obj.communicate()  print(out_error_list)  

View Code

    import subprocess  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)  

View Code

执行python代码,调用系统命令, 怎么得到返回值

import os
import subprocessobj = subprocess.Popen("ifconfig", shell=True, stdout = subprocess.PIPE)print("===================")
print(obj.stdout.read().decode("utf-8"))
print("===================")

看自己需求,可以进行修改

import subprocessdef local_exec_shell_command(shell_command, is_shell=True):"""@:param shell_comamnd@:return exec_result(True or False) _stdout _stderr"""try:process = subprocess.Popen(shell_command,shell=is_shell,stdout=subprocess.PIPE,stderr=subprocess.PIPE)_stdout, _stderr = process.communicate()if process.returncode != 0:return False, _stdout, _stderrreturn True, _stdout, _stderrexcept Exception as e:return False, '', str(e)if __name__ == '__main__':data = local_exec_shell_command("ifconfig")print(data)

转载于:https://www.cnblogs.com/renfanzi/p/5644143.html

Python系统命令操作相关推荐

  1. Python系统命令– os.system(),subprocess.call()

    In this tutorial we will learn about Python System Command. Previously we learned about Python Rando ...

  2. Python文件操作-文本文件、二进制文件、csv文件的读取写入、OS、shutil、CSV模块、常用字符编码

    Python文件操作 文本文件和二进制文件 文件操作相关模块 open()创建文件对象 文件对象的常用属性和方法 pickle 序列化 文本文件读取和写入 文本文件写入步骤 write()/write ...

  3. 看了这篇,你也是Python文件操作高手

    Python文件操作 文本文件和二进制文件 文件操作相关模块概述 创建文件对象 open() 文本文件的写入 基本的文件写入操作 常用编码介绍 ASCII ISO8859-1 GB2312,GBK,G ...

  4. OpenCV和Python动手操作计算机视觉学习教程

    使用OpenCV和Python进行实际操作 面向初学者的OpenCV Python动手操作计算机视觉 你会学到: NumPy基础知识 基于OpenCV的人脸检测 使用OpenCV在图像和视频上绘制形状 ...

  5. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  6. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  7. python列表操作:追加元素到列表的代码

    将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...

  8. python sqlalchemy操作SQLite

    日期转时间: from sqlalchemy import Column, Integer, String, Float, Date date = Column(Date) data="20 ...

  9. python berkeley 操作——尤其提示 需版本匹配

    python berkeley 操作 先到http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/dow ...

最新文章

  1. sonarqube插件开发(三) 调试插件
  2. 【组合数学】生成函数 ( 移位性质 )
  3. [深搜]24点--改进版本
  4. 深入浅出谈接口(interface)和类间继承(extends)
  5. 原创 | 分布式事务科普(终结篇)
  6. python中填充颜色结束的程序_在ttk/python中更改标签小部件的填充颜色
  7. Python学习笔记(二)——高级特性
  8. 备案php代码,备案查询API PHP代码
  9. Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”...
  10. mysq;多表查询 总结
  11. 视频搬运伪原创 视频修改MD5值
  12. oa系统是什么?如何使用企业oa办公系统?
  13. python图像识别植物识别_python 植物识别 error_code
  14. SVN怎么去掉版本控制,去除调svn绿色图标显示
  15. PLSQL查看所连接的ORACLE的版本
  16. 【leetcode】best time to buy and sell stocks(i, ii, iii, iv, v)
  17. 如何利用自己的域名生成短链接
  18. 深度活体模型带交互模型版
  19. RGB、多光谱、高光谱、全色图介绍
  20. 解决光影精灵锁win键的问题

热门文章

  1. python小项目案例-拯救Python新手的几个项目实战
  2. python3在线-Python 3中的新功能
  3. python常用内置函数总结-python 几个常用的内置函数
  4. 学python用什么软件开发-5款Python程序员高频使用开发工具推荐
  5. python 编程入门-实验一 Python程序设计入门
  6. python画柱形图-Python绘制柱状图
  7. python浪漫代码-python七夕浪漫表白源码
  8. python编程有哪些-python编程工具有哪些
  9. qpython手机版-qpythonl app下载
  10. python3.6.5安装教程-[教程]Centos下使用Yum安装python3.6.5