Python中用反斜杠换行时如何优化logging输出以符合PEP8?
嘿,这个问题我太懂了!既要遵守PEP8的长行拆分规范,又不想让日志输出变得拖沓难读,其实有几个简单又好用的办法:
1. 用括号包裹字符串拆分(PEP8官方推荐,最省心)
反斜杠\其实不是PEP8最推荐的长行拆分方式,官方更建议用括号把字符串片段括起来,Python会自动拼接这些片段,代码既整洁合规,日志输出也完全不受影响——不会出现多余空格或换行。
把你的代码改成这样:
logger.warning( "SKIPPED File: '%s'; MyFunc() returned no results." % dir_file )
或者用更现代的f-string(推荐Python 3.6+):
logger.warning( f"SKIPPED File: '{dir_file}'; " "MyFunc() returned no results." )
这样代码拆成了两行符合PEP8,日志输出还是完整的一行,不会让用户需要滚动查看。
2. 让日志输出自动换行(适合超长路径场景)
如果你的文件路径特别长,哪怕输出成一行还是需要滚动,可以主动在字符串里加入换行符\n,甚至给第二行加缩进,让日志更易读:
logger.warning( f"SKIPPED File: '{dir_file}';\n" " MyFunc() returned no results." )
输出效果会变成:
WARNING----SKIPPED File: 'test-filetypes/client-somefile.txt';
MyFunc() returned no results.
要是想让换行后的内容和日志前缀对齐,还可以自定义logging的Formatter,比如调整前缀长度或者给第二行加对应空格,不过上面的简单缩进已经足够应对大部分CLI场景了。
3. 避开反斜杠的坑(为什么原来的方式不推荐)
你原来用的反斜杠拆分,如果不小心在\后面加了空格,那这个空格会被保留到日志输出里,虽然不影响功能,但会让日志看起来有点杂乱。用括号拼接的方式完全不会有这个问题,还能让代码更易维护。
内容的提问来源于stack exchange,提问作者xtian
相关产品推荐
相关产品推荐

