如何阻止CLion中Python打印字符串到控制台时自动换行
我最近碰到个挺头疼的小问题——在CLion里跑Python代码时,打印超过80字符的长文本,控制台居然自动插入了回车换行符(Windows下用十六进制查看是0D 0A),好好的一串哈希值被拆成两段,完全不符合预期。
举个例子,我运行这段代码:
print("99b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f799b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f7")
实际输出会变成这样(在80字符处被强行换行):
Connected to pydev debugger (build 203.7148.70)99b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f799b17c2b92123eb0 ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f7
但我想要的是完整无拆分的输出:
Connected to pydev debugger (build 203.7148.70)99b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f799b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f7
下面给大家分享几种解决办法:
方法1:修改CLion控制台的自动换行设置
这是最直接的方案,从IDE层面彻底解决:
- 打开CLion的
Settings(Windows/Linux按快捷键Ctrl+Alt+S,Mac按Cmd+,) - 依次展开
Build, Execution, Deployment>Console - 找到
Wrap lines选项,取消它的勾选,最后点击Apply和OK保存设置
这样控制台就会完全按照输出内容原样显示,不会再自动给长文本插入换行符。
方法2:通过代码绕过默认输出处理
如果不想改动IDE设置,也可以用代码层面的方式实现:
Python的print函数底层会调用sys.stdout.write,但我们可以直接操作sys.stdout来输出完整文本:
import sys long_text = "99b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f799b17c2b92123eb0ba2a0afb2568d18247fc2b24385a65b8e2da7245bef278f7" sys.stdout.write(long_text + '\n') # 手动添加换行符,和print的最终效果一致 sys.stdout.flush() # 确保内容立刻输出到控制台
这种方式能强制输出完整文本,不会被控制台自动截断(如果控制台窗口本身宽度不够,可能会显示换行,但那是窗口的显示问题,并没有插入实际的换行符)。
方法3:检查PyDev调试器配置
有时候PyDev调试器的输出处理也会影响这个行为,可以检查一下:
- 打开
Settings>Build, Execution, Deployment>Python Debugger - 查看是否存在和输出换行、截断相关的选项,确保没有开启自动处理的设置
内容的提问来源于stack exchange,提问作者BullyWiiPlaza




