繁体   English   中英

打印多行引发的异常

[英]Printing Multi-Line Raised Exceptions

我正在通过Python从SVN获取更新。

我有这个:

try: 
    output = subprocess.check_output(svn.update_cmd,
                                     stderr=subprocess.STDOUT, shell=True)
    print output
    print 'finished svn update'

    revision_number = output.split()[-1].rstrip('.') #revision number
    if log_update:
        write_update(revision_number)
    return revision_number
except subprocess.CalledProcessError, e:
    raise SVNUpdateError(e.output)

当我提出自定义SNVUpdateError ,我将新行打印为\\n s。

如果我try:except SVNUpdateError ,我可以漂亮地打印该行,但它以stdout形式出现,并传递给下一个代码块。 我想提出异常,完全摆脱任务,并从SVN客户端打印结果,了解为什么事情在没有换行和其他特殊字符的情况下向南移动。

谢谢。

因为你使用Python 2.x:

# Usually a simpler error message without newlines
print >>sys.stderr, e.message
# If your message is overly complex, with newlines -- pick a line to print and process it
#print >>sys.stderr, e.message.split('\n')[-1].strip()
# Kill the process
sys.exit(1)

这将把消息(在注释的print语句中使用受限制的换行符)打印到stderr并终止进程。

编辑

如果字符串在字符串中有实际的“\\\\ n”字符而不是特殊字符“\\ n”(这意味着某人最有可能在字符串创建中有某个类型),则可以在打印前进行简单的字符串替换:

print >>sys.stderr, malformatedStr.replace("\\n", "\n")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM