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