以调用 Linux 下的 ping 命令为例:
pingPopen = subprocess.Popen(args='ping -c4 www.google.cn', shell=True)
如果要取得 ping 的输出信息:
pingPopen = subprocess.Popen(args='ping -c4 www.google.cn', shell=True, stdout=subprocess.PIPE) print pingPopen.stdout.read()
外部程序是在一个子进程里执行的,如果要等待该进程的结束,可以使用 wait():
pingPopen.wait()
wait() 方法会返回一个返回代码。
又或者在创建 Popen 对象后调用 communicate() :
stdReturn = subprocess.Popen(args='ping -c4 www.google.cn', shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()
communicate() 返回一个 (stdout, sterr)。
使用 call() 和 check_all()
subprocess 模块里面有两个方便的函数 call() 和 check_all(),可以直接调用来执行外部程序。
call(*popenargs, **kwargs)
check_call(*popenargs, **kwargs)
它们的参数列表跟 Popen 的构造函数参数列表一样。返回一个 returncode。例如:
subprocess.call('ping -c4 www.google.cn',shel=True)
沒有留言:
張貼留言