2010-02-23 78 views
3

我已经创建了一个脚本来对一批文件运行一个测试脚本,它已经在夜间进行了两个晚上的测试,但是它只是停留在某个点上。是否对Python中的command.getstatusoutput()缓冲区有限制

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

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

回答

6

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

由于commands模块无论如何都被弃用,所以最好使用subprocess模块,它提供了类似于文件的访问过程输出。如果您需要为以后的输出,只是把它写在文件中的硬盘上

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

如果你想程序处理输出,读stdout中这样

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

这将是更容易上你的记忆。