目录
  • 3、使用subprocess.popen()

1、使用os.system()方法

os.system用来执行cmd指令,在cmd输出的内容会直接在控制台输出,返回结果为0表示执行成功。

示例代码:

# coding:utf-8

import os

os.system("ls")

ps:os.system()方法是简单粗暴的执行cmd指令,没有办法获取到cmd输出的内容。

pps:os.system()方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0x0100,换算为十进制得到256。

2、使用os.popen()方法

os.popen()方法用于从一个命令打开一个管道。在unixwindows中有效。os.popen返回的是一个file对象,同open打开文件一样操作。

popen()方法语法格式如下:

os.popen(command[, mode[, bufsize]])


参数:

command – 使用的命令。
mode – 模式权限可以是 ‘r'(默认) 或 ‘w'。
bufsize – 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。


示例代码:

# coding:utf-8

import os

# popen返回文件对象,同open操作一样
f = os.popen(r"ls", "r")

l = f.read()
print(l)
f.close()

返回值是文件对象的推荐处理方法:

with os.popen(cmd, "r") as p:
    r = p.read()


使用它,不需要显式的写p.close()。

ps:os.popen()方法是非阻塞的。

3、使用subprocess.popen()

python2.4版本后,提供了subprocess这个模块来产生子进程,并且可以连接到子进程的标准输入、输出、错误中,还可以获得子进程的返回值。

subprocess.popen()的定义如下:

class 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)


其参数意义在此不赘述。一段简单的示例代码:

# coding:utf-8

import subprocess

p = subprocess.popen("ls", shell=true, stdout=subprocess.pipe)
r = p.stdout.read()
print(r)

ps:subprocess提供了2种方法调用子程序。subprocess.call()是阻塞式的,subprocess.popen()是非阻塞的。

到此这篇关于在python中执行cmd的文章就介绍到这了,更多相关python中执行cmd内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!