我正在通过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客户端打印结果,了解为什么事情在没有换行和其他特殊字符的情况下向南移动。
感谢。
答案 0 :(得分:1)
因为您使用的是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")