Python系统命令操作
系统命令
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系统命令操作相关推荐
- Python系统命令– os.system(),subprocess.call()
In this tutorial we will learn about Python System Command. Previously we learned about Python Rando ...
- Python文件操作-文本文件、二进制文件、csv文件的读取写入、OS、shutil、CSV模块、常用字符编码
Python文件操作 文本文件和二进制文件 文件操作相关模块 open()创建文件对象 文件对象的常用属性和方法 pickle 序列化 文本文件读取和写入 文本文件写入步骤 write()/write ...
- 看了这篇,你也是Python文件操作高手
Python文件操作 文本文件和二进制文件 文件操作相关模块概述 创建文件对象 open() 文本文件的写入 基本的文件写入操作 常用编码介绍 ASCII ISO8859-1 GB2312,GBK,G ...
- OpenCV和Python动手操作计算机视觉学习教程
使用OpenCV和Python进行实际操作 面向初学者的OpenCV Python动手操作计算机视觉 你会学到: NumPy基础知识 基于OpenCV的人脸检测 使用OpenCV在图像和视频上绘制形状 ...
- python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】
本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...
- python中年大叔学编程_中年大叔学编程-Python简单操作文件
原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...
- python列表操作:追加元素到列表的代码
将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...
- python sqlalchemy操作SQLite
日期转时间: from sqlalchemy import Column, Integer, String, Float, Date date = Column(Date) data="20 ...
- python berkeley 操作——尤其提示 需版本匹配
python berkeley 操作 先到http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/dow ...
最新文章
- sonarqube插件开发(三) 调试插件
- 【组合数学】生成函数 ( 移位性质 )
- [深搜]24点--改进版本
- 深入浅出谈接口(interface)和类间继承(extends)
- 原创 | 分布式事务科普(终结篇)
- python中填充颜色结束的程序_在ttk/python中更改标签小部件的填充颜色
- Python学习笔记(二)——高级特性
- 备案php代码,备案查询API PHP代码
- Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”...
- mysq;多表查询 总结
- 视频搬运伪原创 视频修改MD5值
- oa系统是什么?如何使用企业oa办公系统?
- python图像识别植物识别_python 植物识别 error_code
- SVN怎么去掉版本控制,去除调svn绿色图标显示
- PLSQL查看所连接的ORACLE的版本
- 【leetcode】best time to buy and sell stocks(i, ii, iii, iv, v)
- 如何利用自己的域名生成短链接
- 深度活体模型带交互模型版
- RGB、多光谱、高光谱、全色图介绍
- 解决光影精灵锁win键的问题
热门文章
- python小项目案例-拯救Python新手的几个项目实战
- python3在线-Python 3中的新功能
- python常用内置函数总结-python 几个常用的内置函数
- 学python用什么软件开发-5款Python程序员高频使用开发工具推荐
- python 编程入门-实验一 Python程序设计入门
- python画柱形图-Python绘制柱状图
- python浪漫代码-python七夕浪漫表白源码
- python编程有哪些-python编程工具有哪些
- qpython手机版-qpythonl app下载
- python3.6.5安装教程-[教程]Centos下使用Yum安装python3.6.5