【发布时间】:2016-09-01 22:08:31
【问题描述】:
我有一些 Django 管理命令,它们调用其他类中的方法来执行各种任务,例如从外部 API 获取数据。
在这些方法中,我输出了一行显示进度,例如:
print('Fetched %d of %d' % (n, total) + ' '*30, end='\r')
这很好,但是当我运行我的测试时,它会被打印出来并搞砸.....E....F... 显示。我可以在所有测试中修补 print,但这似乎很笨拙。
所以 (a) 我应该以其他方式输出该进度线,和/或 (b) 是否有更好的方法在运行测试时抑制该输出?
【问题讨论】:
-
你可以有你自己的 print 包装器,它会检查 sys.stdout 是否是一个终端,并且取决于它的行为不同,例如\r 代表终端 \n 代表文件或管道