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操作MySQL数据库具体方法
Oct 28 Python
Python输出各行命令详解
Feb 01 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
python实现高斯判别分析算法的例子
Dec 09 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Python中for后接else的语法使用
May 18 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中Session的概念
2006/10/09 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
PHP curl使用实例
2015/07/02 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
jQuery对表单的操作代码集合
2011/04/06 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
JavaScript中的this机制
2016/01/30 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Python中的各种装饰器详解
2015/04/11 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
简单了解python协程的相关知识
2019/08/31 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
python实现的Iou与Giou代码
2020/01/18 Python
Tensorflow 多线程设置方式
2020/02/06 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
岗位职责怎么写
2014/03/14 职场文书
大学毕业生推荐信
2014/07/09 职场文书
六五普法宣传标语
2014/10/06 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
爱心捐款感谢信
2015/01/20 职场文书
求职信格式范文
2015/03/19 职场文书
追讨欠款律师函
2015/05/27 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python