gpt4 book ai didi

python - 打印语句仅出现在子进程调用之前或之后

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:16 25 4
gpt4 key购买 nike

此问题与 Python: why print statements and subprocess.call() output are out of sync? 相关但这些解决方案并不适合我的特殊情况。我正在尝试在 python 中完成一个自动化测试过程,该过程首先打印测试套件的名称,然后有一个 for 循环,该循环遍历打印特定测试名称的列表,然后调用子进程来执行测试,以测试完成的打印语句结束。最后,我打印一条声明,表明它是测试套件名称的结尾。

即=========开始测试套件:=========

---------开始测试:----------

调用子进程来执行测试

---------结束测试:------------

重复测试

========结束测试套件:==========

我当前的代码工作正常,但是当我将其输出重定向到文件时,它将所有打印语句放在底部。当使用另一个问题中的解决方案时,它对我来说完全相反,首先打印所有打印语句,然后执行测试。我尝试使用 sys.stdout.flush() 以及关闭缓冲,但两者都给了我同样的结果。当我重定向输出或写入文件时,如何才能完全按照执行/代码中的方式打印所有内容?

最佳答案

我通常解决此类问题的方法是捕获 python 程序中的输出,并在我希望使用 Popen 打印时打印它

>>> def do_ls():
... print "I'm about to ls"
... ls = subprocess.Popen('ls', stdout=subprocess.PIPE)
... output = ls.communicate()[0] #wait for the process to finish, capture stdout
... print 'ls output:'
... print output
... print 'done.'

如果您发布一些代码,我可以向您展示如何更具体地针对您的测试执行此操作

关于python - 打印语句仅出现在子进程调用之前或之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11892370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com