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 相关文章推荐
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
Python 处理数据的实例详解
Aug 10 Python
python 上下文管理器使用方法小结
Oct 10 Python
用python实现的线程池实例代码
Jan 06 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python3实现名片管理系统
Nov 29 Python
Python3解释器知识点总结
Feb 19 Python
Python二维码生成识别实例详解
Jul 16 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python代码区分大小写吗
Jun 17 Python
python中 _、__、__xx__()区别及使用场景
Jun 30 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/06/10 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
js实现星星打分效果
2020/07/05 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Python多线程实现同步的四种方式
2017/05/02 Python
python万年历实现代码 含运行结果
2017/05/20 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
pycharm新建一个python工程步骤
2019/07/16 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
用python对oracle进行简单性能测试
2020/12/05 Python
python数据抓取3种方法总结
2021/02/07 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
2014年小学德育工作总结
2014/12/05 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL