python os popen_python2 os.popen简单用法

os.popen

os.popen() 是 os 模块内置的“管道”函数,包含了上面两个方法的所有功能,并且可以获得命令/可执行文件的标准输入和输出。

这在需要 Python 编程来控制命令的执行情况,就显的很有意义了,比如执行一个可执行文件来监测服务器是否启动,只有在服务器启动后,才能执行第二个程序,来启动所有服务。这就需要判断一个子进程执行的结果。

格式os.popen(command [, mode='r' [, bufsize]]) -> pipe

说明:command:命令,或一个可执行文件的全路径

mode: 模式,模式址 'r' 只读

bufsize: 内容的缓存区大小

返回值是一个“管道”,在 Linux 系统下也可以称之为“文件对象/文件描述符“。

范例>>> import os

>>> stdout = os.popen('echo "Fuvism"', 'r')

>>> print stdout

返回了一个只读的 file 对象,可以读出命令的执行结果。

获取命令/可执行文件的输出内容:>>> print stdout.read()

Fuvism

>>> stdout.close()

可写模式:

>>> import os

>>> stdin = os.popen('cat -', 'w')

>>> print stdin

返回了一个可写的 file 对象,通过写入内容 "Fuvism",给命令 cat - 来提供输出的内容。

写入内容:>>> stdin.write('\tFuvism\t')

>>> stdout.close()

Fuvism

使用

就像文件描述符的使用过程一样,也需要在使用后关闭:>>> stdout.close()

os.open2() 可以同时提供标准输入和输出:

>>> stdin, stdout = os.popen2('cat -')

>>> stdin.write('\tFuvism\t')

>>> stdin.close()

>>> print stdout.read()

>>> stdout.close()

上面是捕获输出(在这里的文件描述符中,也称之为“标准输出”),还可以通过 open3() 捕获标准错误,也就是可以通过是否有标准错误,来判断命令是否执行成功:>>> stdin, stdou, stderr = os.popen3('cat -; echo "Fuvism Error" 1>&2')

>>> stdin.write('\tFuvism\t')

>>> stdin.close()

>>> print stdout.read()

>>> stdout.close()

>>> print stderr.read()

>>> stderr.close()

每个都需要单独关闭 close(),如果程序报错,则 stderr 将可以通过 read() 获取错误内容。

大多数情况下需要同时访问 stdout 和 stderr

特点

尽管 popen 也能在 windows 上使用,但是不能在 windows 环境直接调用 Linux 相关的命令。

描述中的术语(Unix中通用):

stdin - 进程的“标准输入”流(文件描述符0)

stdout - 进程的“标准输出”流(文件描述符1)

stderr - 进程的“标准错误”流(文件描述符2)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值