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

3 投票
1 回答
950 浏览
提问于 2025-04-15 19:37

我写了一个脚本,用来对一批文件运行测试脚本,已经连续测试了两个晚上,但在某个地方总是卡住。

我在想,可能是因为使用了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)

这样会对你的内存更友好。

撰写回答