大佬教程收集整理的这篇文章主要介绍了Windows 7 64位上的Python子进程 – 当stdout = PIPE时没有输出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到一些Python代码,它在Windows 7 64位上调用子进程.当子进程的stdout发送到管道时,不会产生任何输出.子进程似乎运行和终止没有问题,它只是不产生任何输出.
编辑:相同的代码在WinXP 32位上正常工作,所以我更新了问题标题.
# (lisTing 1) from subprocess import * #cmdline= (a valid command linE) proc = Popen(cmdline,sHell=True,stdout=PIPE,stderr=PIPE) out,err = proc.communicate() print( out ) print( err )
这给出了输出
out: err:
# (lisTing 2) proc = Popen(cmdline,sHell=TruE) proc.communicate()
这为控制台提供了预期的输出.
我确信可执行文件实际上是将其输出写入stdout.我有C源代码,我添加了这一行:
fprintf(stdout,"HelLO");
同样,在运行清单2时会看到“HelLO”,但不会列出清单1.
#include <iostream> int main() { std::cout << "HelLO" << std::endl; }
同样的事情仍然发生 – 运行清单2时会看到“HelLO”,但不会列出清单1.
如果我将cmdline设置为’dir’,则列表1和列表2都会出现预期的情况 – 目录内容将打印到控制台.
我尝试过的其他事情:Python 3.3和Python 2.7(结果相同); bufsize = 0(相同的结果);检查proc.returncode(它是0,如预期的那样);删除stderr = PIPE(在这种情况下,列表1按预期给出“err:None”).
编辑 – 我也尝试了= proc.stdout而不是带有相同结果的communic()方法. Python文档和其他问题表明,communication()方法是正确的使用方法.
以上是大佬教程为你收集整理的Windows 7 64位上的Python子进程 – 当stdout = PIPE时没有输出全部内容,希望文章能够帮你解决Windows 7 64位上的Python子进程 – 当stdout = PIPE时没有输出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。