【发布时间】:2014-10-28 10:37:49
【问题描述】:
我有一些相对较大的程序,我曾经以每个函数只打印一行输出的方式将其进度打印到控制台(它在函数运行时显示“正在做某事......”(有时它显示百分比条)并在函数成功完成时变为“正在做某事...完成”。我应用'\r'、行清除等以使我的进度条看起来不错。但是,当发生错误时,消息会继续同一行,我想避免。例如我有一个代码:
import os, sys, subprocess
def some_function(filename):
print('Doing something... ', end = '')
sys.stdout.flush()
with open(os.devnull, 'wb') as devnull:
check = subprocess.call(['ls', filename], stdout = devnull)
if check != 0:
sys.exit(1)
print('Done')
some_function('some.file')
它产生以下输出(取决于是否存在错误):
Doing something... Done
或
Doing something... ls: some.file: No such file or directory
以及我想在出错的情况下看到什么:
Doing something...
ls: some.file: No such file or directory
如果发生错误(也可能是一些内部或用户定义的异常),是否有一些通用的方法可以在输出中引入换行符?
【问题讨论】:
标签: python python-3.x stdout