python运行命令_对python中执行DOS命令的3种方法总结

1. 使用os.system("cmd")

特点是执行的时候程序会打出cmd在Linux上执行的信息。

import os

os.system("ls")

2. 使用Popen模块产生新的process

现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值了。

Popen原型是:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

参数bufsize:指定缓冲。

参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。在windows平台下,默认的shell由COMSPEC环境变量来指定。

参数stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。

参数preexec_fn只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用。

参数Close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管 道。我们不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。

如果参数shell设为true,程序将通过shell来执行。

参数cwd用于设置子进程的当前目录。

参数env是字典类型,用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。

参数Universal_newlines:不同操作系统下,文本的换行符是不一样的。如:windows下用'/r/n'表示换,而Linux下用 ‘/n'。如果将此参数设置为True,Python统一把这些换行符当作'/n'来处理。

参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。

subprocess.PIPE

在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数,表示与子进程通信的标准流。

subprocess.STDOUT

创建Popen对象时,用于初始化stderr参数,表示将错误通过标准输出流输出。

Popen的方法:

Popen.poll()

用于检查子进程是否已经结束。设置并返回returncode属性。

Popen.wait()

等待子进程结束。设置并返回returncode属性。

Popen.communicate(input=None)

与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。 Communicate()返回一个元组:(stdoutdata, stderrdata)。注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。同样,如 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。

Popen.send_signal(signal)

向子进程发送信号。

Popen.terminate()

停止(stop)子进程。在windows平台下,该方法将调用Windows API TerminateProcess()来结束子进程。

Popen.kill()

杀死子进程。

Popen.stdin

如果在创建Popen对象是,参数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策子进程发送指令。否则返回None。

Popen.stdout

如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。

Popen.stderr

如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。

Popen.pid

获取子进程的进程ID。

Popen.returncode

获取进程的返回值。如果进程还没有结束,返回None。

例如:

p = Popen("cp -rf a/* b/", shell=True, stdout=PIPE, stderr=PIPE)

p.wait()

if p.returncode != 0:

print "Error."

return -1

3. 使用commands.getstatusoutput方法

这个方法也不会打印出cmd在linux上执行的信息。这个方法唯一的优点是,它不是一个阻塞的方法。即没有Popen函数阻塞的问题。使用前需要import commands。

例如:

status, output = commands.getstatusoutput("ls")

还有只获得output和status的方法:

commands.getoutput("ls")

commands.getstatus("ls")

以上这篇对python中执行DOS命令的3种方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: 对python中执行DOS命令的3种方法总结

本文地址: http://www.cppcns.com/jiaoben/python/227834.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio 不生成buildconfig,Android Studio Update 0.4.0找不到buildConfig()

将Android Studio升级到版本0.4.0后,出现了一个新错误:我通过gradle-wrapper.properties升级到gradle 1.9distributionUrlhttp\://services.gradle.org/distributions/gradle-1.9-all.zip并升级了build.gradle中的gradle版本dependencies {classpath com…

谭民机器人_机器人视觉伺服研究进展-中科院自动化所-谭民.

文章编号:100220446(2004 0320277206机器人视觉伺服研究进展Ξ王麟琨,徐德,谭民(中国科学院自动化研究所复杂系统与智能科学实验室,北京100080摘要:,针对当前机器人视觉伺服所面临的主要问题, .关键词:机器人;视觉伺服;综述中图分类号::Survey of R esearch on Robotic Visual …

mysql 按月和年累加_广西柳州市市场监管局公布市2020年11月(第一批)电梯按需维保试点名单...

中国质量新闻网讯 根据《柳州市改进电梯维护保养模式试点工作方案》,近日,广西柳州市市场监管局公布柳州市首批按需维保试点电梯名单,冠亚蓝湾国际小区和南庆安置小区共46台电梯成为首批试点电梯,标志着柳州市全面启动了按需维保改…

python默认深拷贝_Python 深拷贝与浅拷贝

首先分享Python里面的数据类型1、不可变类型:Number(数字)、String(字符串)、Tuple(元组)。不可变数据类型在第一次声明赋值的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内…

上传 mp4 格式判断_视频如何转换成通用的MP4格式?按下这个键,10秒就能搞定...

我们在网上下载视频的时候,有很多的视频都是无法播放的,或者是需要特定的播放器才可以播放。其实,只要把这些视频的格式转换成通用的MP4格式即可。如果你还不知道怎么转换视频格式,下面就教大家两个小方法,百试百灵。一…

android不能在主线程,安卓开发:主线程真的不能做UI操作吗?这一点很多程序员都没想到...

只要参与过安卓项目开发一两年的朋友们应该清楚,为了避免UI渲染出现异常安卓框架限制UI操作只能在主线程中进行,如果贸然在子线程做了UI操作结果会怎样?我们随便写下了如下测试代码。不出意外的话,代码执行报错抛出了名为CalledFr…

c++注释快捷键_Jupyter Notebook amp; Lab快捷键大全

Jupyter有两种模式,命令模式和编辑模式,分别有不同的快捷键。编辑模式(按键 Enter 切换):可以往单元中键入代码或文本,此时单元格被蓝色的框线包围,且命令模式下的快捷键不生效; 命令模式 (按键 Esc 开启)&…

多核cpu应用场景_CPU占用100%!PC卡顿原来可以这么解决:多场景多任务也流畅

现代生活里,不论是工作还是生活,多开软件和处理事务可以说都是家常便饭的事情。一边玩着醉心已久的游戏,一边解压着新的电影和游戏;为了查询资料,一不小心打开了数十个网页;复杂繁重的工作铸就了动辄上百兆…

swot分析法案例_项目型销售案例剖析的五大步骤

我们的案例分析方式是根据哈佛大学与中欧国际工商学院的案例分析方法来总结出我们的模式的。这种分析方法包括两种互相关联和依赖的方面。第一方面,就是要对所指定的将供集体讨论的案例,做出深刻而有意义的分析,包括找出案例所描述的情景中存…

autojs 云控_autojs websocket 核心示例代码,云控技术

//初始化方法function recordInit(scriptName){//let ipInfoJson getIP()// let ip ipInfoJson.cip// let location ipInfoJson.cnamelet deviceIMEI ,deviceBrand,deviceModel,AndroidVer,deviceWH,deviceBoard,deviceMac,AndroidIdtry {deviceBrand device.brand;//制造…

定时器和promise_从Promise链理解EventLoop

面试题new Promise(resolve > { setTimeout(()>{ console.log(666); new Promise(resolve > { resolve(); }) .then(() > {console.log(777);}) }) resolve(); }) .then(() > { new Promise(resolve > { resolve(); …

ugui源码_UGUI整体解决方案基础篇(Unity 2019)

课程介绍:本课程是UGUI系列课程的第一篇:基础篇主要是讲解UGUI的基础组件及接口的使用方法,目前UGUI是unity最常用的UI系统,这部分基础只是是每个同学都应该掌握的,这里我就是简单的讲解了用法,大家对UGUI熟…

android 实例源码解释,Android Handler 原理分析及实例代码

Android Handler 原理分析Handler一个让无数android开发者头疼的东西,希望我今天这边文章能为您彻底根治这个问题今天就为大家详细剖析下Handler的原理Handler使用的原因1.多线程更新Ui会导致UI界面错乱2.如果加锁会导致性能下降3.只在主线程去更新UI,轮询处理Handl…

amd cpu排行_最新intel和amd处理器性能排行cpu天梯图2019

现在市面上cpu厂家有很多,比如常见的intel系列的、amd系列CPU,cpu对电脑起着至关重要的作用,所以我们需要知道cpu性能的好坏,为此小编这就给大家带来最新intel和amd处理器性能排行对比天梯图,大家可以了解一下吧。inte…

python中的对象列表_Python内建的对象列表

Python内建的对象列表刚写Python肯定会遇到这样的情况,想写些什么,但又不知从何写起...在我看来问题在于我们不知道有什么东东可以拿来玩,这里列出Python的内建对象,稍微归类了一下,多看几遍代码自然笔上生花&#xff…

电脑会显示android,怎么在电脑上显示、操作安卓手机

想要在电脑上显示、操作安卓手机,该怎么办,那么怎么在电脑上显示、操作安卓手机的呢?下面是学习啦小编收集整理的怎么在电脑上显示、操作安卓手机,希望对大家有帮助~~在电脑上显示、操作安卓手机的方法工具/原料windows操作系统安卓手机电脑…

git version是什么软件_Deepin 15.11 安装 ZoneMinder 视频监控软件

Zoneminder是一款开源的视频监控软件,可以很方便的连接ip摄像头。因计划将家中的监控摄像头引入NAS,在一台deepin系统的笔记本是先进行了测试。UBUNTU和debian系统都是很容易安装这个软件的。未来在NAS上用docker启动一个专门的zoneminder,do…

看不出svp补帧_专业补帧软件SVP4 实现PotPlayer视频补帧教程

虽然能实现帧率翻倍,不过现在视频绝大多数都是24帧或25帧,翻倍也才48帧,没办法实现补帧后达到60帧的效果。SVP4是一款专业版视频补帧软件,提供GPU加速,并允许使用中档CPU和几乎任何GPU硬件为60Hz的FullHD 1080p视频重新…

android 通知历史,Android P新特性:追踪应用通知历史

原标题:Android P新特性:追踪应用通知历史IT之家3月9日消息 不久前,谷歌已经正式推出了首个Android P开发者预览版,包含了许多新特性。对此,IT之家也进行了一系列报道。该系统的新特性也正在不断被发现。例如最新消息显…

文件另存为时名称会改变_易经:人处在困境时,不要焦虑,改变固定习惯,就会迎来转机...

我读《易经》,悟到一些规律:人的一生,起起落落,时而顺利,时而受困,都是正常现象,没有必要把困难和压力看得太重。人处在困境时,不要焦虑,只要改变你的固定习惯&#xff0…