subprocess.getstatusoutput执行命令的输出顺序不对

正常的命令执行结果:

图片描述

subprocess.getstatusoutput 的执行结果:

图片描述

环境 python3.6,顺序上 getstatusoutput 除了错误信息给提前了,其他顺序是没错的,为什么会这样?如何达到和终端执行命令的输出一致?

附上简单的sql脚本:

图片描述

我在源码上没找到顺序错误的原因。

阅读 5k
2 个回答

自问自答,想到一个与顺序错位的可能答案,就是在 C 语言中,标准输出有缓冲,而错误信息是不缓冲的。

图片描述

这也是为什么我在源码层上没发现什么问题, C 语言本身机制如此。python 执行指令时,win机器上用的是 _winapi.CreateProcess 执行的,这部分的实现是 C 的。

这个比较奇怪,我在我本地测试,没有出现你的这种情况,得到的output都是顺序的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题