关于python:Python中执行cmd

  • 应用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。

  • 应用os.popen()办法

os.popen()办法用于从一个命令关上一个管道。在Unix,Windows中无效。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()办法是非阻塞的。

  • 应用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()是非阻塞的。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理