Python如何使用OS模块调用cmd


Posted in Python onFebruary 27, 2020

在os模块中提供了两种调用 cmd 的方法,os.popen() 和 os.system()

os.system(cmd) 是在执行command命令时需要打开一个终端,并且无法保存command命令的执行结果。

os.popen(cmd,mode) 打开一个与command进程之间的管道。返回值是一个文件对象,可以读或者写(由mode决定,默认是'r')。如果mode为'r',可以使用此函数的返回值调用read()来获取command命令的执行结果。

os.system()

定义:

def system(*args, **kwargs): # real signature unknown
  """ Execute the command in a subshell. """
  pass

简单的来说就是在shell中执行command命令

示例:

(venv) C:\Users\TynamYang>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import os
>>> cmd = 'echo "I am tynam"'
>>> os.system(cmd)
"I am tynam"
>>>

os.popen()

定义:

# Supply os.popen()
def popen(cmd, mode="r", buffering=-1):
  if not isinstance(cmd, str):
    raise TypeError("invalid cmd type (%s, expected string)" % type(cmd))
  if mode not in ("r", "w"):
    raise ValueError("invalid mode %r" % mode)
  if buffering == 0 or buffering is None:
    raise ValueError("popen() does not support unbuffered streams")
  import subprocess, io
  if mode == "r":
    proc = subprocess.Popen(cmd,
                shell=True,
                stdout=subprocess.PIPE,
                bufsize=buffering)
    return _wrap_close(io.TextIOWrapper(proc.stdout), proc)
  else:
    proc = subprocess.Popen(cmd,
                shell=True,
                stdin=subprocess.PIPE,
                bufsize=buffering)
    return _wrap_close(io.TextIOWrapper(proc.stdin), proc)

也是在shell中执行command命令,但是返回的结果却是一个文件对象,可以对其读写

其中的三个参数含义:

command -- 执行的shell命令

mode -- 模式权限,读(‘r')或者写(‘w'),默认为读(‘r')

bufsize -- 如果将缓冲值设置为0则不会进行缓冲。 如果缓冲值为1则在访问文件时将执行行缓冲。 如果将缓冲值设置为大于1的整数则以设置的缓冲大小执行缓冲操作。 如果为负则缓冲区大小为系统默认值(默认行为)。

示例:

>>> import os
>>> cmd = 'echo "I am tynam"'
>>> f = os.popen(cmd, 'r')
>>> f.read()
'"I am tynam"\n'
>>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用HTMLParser解析html实例
Feb 08 Python
python3.5仿微软计算器程序
Mar 30 Python
python 通过logging写入日志到文件和控制台的实例
Apr 28 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
pytorch 实现在测试的时候启用dropout
May 27 Python
python之生成多层json结构的实现
Feb 27 #Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 #Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 #Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 #Python
Python 格式化打印json数据方法(展开状态)
Feb 27 #Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 #Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 #Python
You might like
PHP程序员基本要求和必备技能
2014/05/09 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
浅析Python中的多重继承
2015/04/28 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
python命令行参数用法实例分析
2019/06/25 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
高一数学教学反思
2014/02/07 职场文书
家长对老师的评语
2014/04/18 职场文书
爱护公共设施标语
2014/06/24 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
mysql数据库实现设置字段长度
2022/06/10 MySQL