python中的command.getstatusoutput()缓冲区是否有限制

时间:2010-02-23 14:34:37

标签: python linux

我已经创建了一个脚本来运行一批文件上的测试脚本,已经隔夜测试了两个晚上,但它只是在某个时刻挂起。

我想知道command.getstatusoutput()是否是这里的问题,因为测试脚本具有繁重的日志记录机制。

更新:
如何使用子进程模块函数不同于使用os.system()哪种方式做得更好?

1 个答案:

答案 0 :(得分:6)

方法getstatusoutput()返回一个字符串,该字符串可能很长,因此占用大量空间并导致分页到磁盘和其他令人讨厌的东西。

由于commands模块已被弃用,因此最好使用subprocess模块,该模块提供对进程输出的类文件访问。如果以后需要输出,只需将其写入硬盘上的文件

即可
cmd = subprocess.Popen(['ls'], stdout=file('output', 'w'))

如果您希望进程处理输出,请像这样读取标准输出

cmd = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
for line in cmd.stdout:
    do_stuff(line)

你的记忆会更容易。