python中command.getstatusoutput()的缓冲区是否有限制?
我写了一个脚本,用来对一批文件运行测试脚本,已经连续测试了两个晚上,但在某个地方总是卡住。
我在想,可能是因为使用了commands.getstatusoutput()这个命令,因为我的测试脚本有很多日志记录。
更新:
使用subprocess模块的函数和使用os.system()有什么不同?哪种方式更好呢?
1 个回答
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)
这样会对你的内存更友好。