[python] 执行 dos 命令
python的os模块
os模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。
os.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:os.system("ipconfig").
os.popen带返回值的,如何获取返回值。如
p=os.popen(cmd)
print(p.read()) 得到的是个字符串。
这两个都是用当前进程来调用,也就是说它们都是阻塞式的。
Popen模块产生新的process
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:指定缓冲
- stdin, stdout, stderr 分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。
- preexec_fn 只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用。
- Close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管 道。
- shell 设为 true,程序将通过shell来执行。
- cwd 用于设置子进程的当前目录
- env 是字典类型,用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
- Universal_newlines: 不同操作系统下,文本的换行符是不一样的。如:windows下用’/r/n’表示换,而Linux下用 ‘/n’。如果将此参数设置为True,Python统一把这些换行符当作’/n’来处理。
- subprocess.PIPE:在创建Popen对象时,subprocess.PIPE可以初始化 stdin, stdout 或 stderr 参数,表示与子进程通信的标准流。
- subprocess.STDOUT: 创建Popen对象时,用于初始化 stderr 参数,表示将错误通过标准输出流输出。
Popen的方法:
- Popen.poll() 用于检查子进程是否已经结束。设置并返回returncode属性
- Popen.wait() 等待子进程结束。设置并返回returncode属性。
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。
使用
运行后会在当前进程下面产生子进程。
sub=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
sub.wait()
out = sub.stdout.read()
print(out)
[python] 执行 dos 命令的更多相关文章
- 使用Python执行dos命令并获取输出的结果
import os import subprocess # 第一种 result1 = subprocess.check_output('dir').decode('GBK') print(resul ...
- appium自动化测试框架——在python脚本中执行dos命令
一般我们运行dos命令,会有两种需求,一种是需要收集执行结果,如ip.device等:一种是不需要收集结果,如杀死或开启某个服务. 对应的在python中就要封装两种方法,来分别实现这两种需求. 1. ...
- 【转载】DOS 系统和 Windows 系统有什么关系?为什么windows系统下可以执行dos命令?
作者:bombless 因为不同的系统都叫 Windows ,这些系统在界面上也有一定连续性并且因此可能造成误解,所以有必要稍微梳理一下几个不同的 Windows 系统.首先是 DOS 上的一个图形界 ...
- C#执行外部程序之执行DOS命令和批处理
在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...
- C#执行DOS命令(CMD命令)
在c#程序中,有时会用到调用cmd命令完成一些功能,于是在网上查到了如下方法,实现了c#执行DOS命令,并返回结果. //dosCommand Dos命令语句 publ ...
- 在.net中悄悄执行dos命令,并获取执行的结果(转)
一.怎样使dos命令悄悄执行,而不弹出控制台窗口? 1.需要执行带“/C”参数的“cmd.exe”命令,它表示执行完命令后立即退出控制台.2.设置startInfo.UseShellExecute = ...
- c#执行Dos命令
一个执行Dos命令的窗口程序,与各位分享. 效果图: 具体实现在代码中有详细的注释,请看代码. 实现执行CMD命令的核心代码(Cmd.cs): [csharp] using S ...
- C# 执行DOS命令和批处理
在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...
- Python3执行DOS命令并截取其输出到一个列表字符串,同时写入一个文件
#执行DOS命令并截取其输出到一个列表字符串,同时写入一个文件#这个功能很有用listing=os.popen('ipconfig').readlines()for i in listing: pri ...
随机推荐
- Flutter 父子组件传值
Flutter 父子组件传值 一父传子: 父中: void onButtonChange(val1,val2,val3){ print('============================子向父 ...
- cookbook 6.1 温标的转换
任务: 在开氏温度(Kelvin).摄氏度(Celsius).华氏温度(Fahrenheit).兰金温度(Rankine)之间做转换 解决方案: #coding=utf-8 class Tempera ...
- mac重启php7.0
killall php-fpm /usr/local/opt/php70/sbin/php70-fpm restart
- docker的数据管理
容器中管理数据主要有两种方式: 1.数据卷:容器内数据直接映射到本地宿主机. 2.数据卷容器:使用特定容器维护数据卷 数据卷: 数据卷是一个可供容器使用的特殊目录,他将主机操作系统目录直接映射进容器. ...
- JavaScript:固定table的表头
当表格数据很多,以致于容器块元素出现滚动条.而在滚动滚动条的时候,数据行会被块元素遮挡.若要保持表格的head部分始终在可视范围内,我们需要对表头进行特殊的样式设置.下面的jsp代码可以实现表头固定, ...
- Java企业版文档地址
地址:http://docs.oracle.com/javaee/7/index.html
- centos6.5和centos7如何搭建php环境(包括php7)
查看下centos的版本信息: #适用于所有的linux lsb_release -a #或者 cat /etc/redhat-release #又或者 rpm -q centos-release 安 ...
- vue 的多页面应用
vue-cli3 中构建多页面的应用 第一步:先创建一个 vue-cli3 的项目:vue create app 然后运行项目:npm run serve 现在开始多页面的应用: 首先在 src 的目 ...
- vue事件.navtive 的使用
我们可以直接在组件标签上绑定事件了 然后在 methods 的对象中调用这个方法了 正常情况下是不可以的,但是我们可以使用事件修饰符 .navtive 就可以实现了 props的对象写法
- PHP AJAX返回 "TEXT"
例子:通过AJAX间接访问数据库,查出Nation表显示在页面上,并添加删除按钮 //首先在外层添加一个按钮,并造好表头 <div><input type="button& ...