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

我已经创建了一个脚本来在一批文件上运行测试脚本,已经测试了两个晚上,但是它只是挂在某个点上。
我想知道这里的问题是否是commands.getStatusOutput(),因为测试脚本有一个很重的日志记录机制。
更新:
使用子流程模块函数与使用os.system()有何不同哪种方式更好?


最佳答案:

方法getstatusoutput()返回一个字符串,该字符串可能非常长,因此会占用大量空间,并导致对磁盘的分页和其他讨厌的事情。
由于无论如何都不推荐使用commands模块,因此最好使用subprocess模块,该模块提供对流程输出的类似文件的访问。如果以后需要输出,只需将其写入硬盘上的文件

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

如果您希望process处理输出,请像这样阅读stdout
cmd = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
for line in cmd.stdout:
    do_stuff(line)

这对你的记忆会更容易。

    公众号
    关注公众号订阅更多技术干货!