Python Excel自动化脚本运行时控制台出现[?25h字符是什么原因?
字符含义与产生原因
[?25h 是标准ANSI转义控制序列,作用是恢复控制台光标显示,与之对应的隐藏光标序列为[?25l。
你代码中使用的progress库的Bar进度条组件,默认开启了光标隐藏逻辑:进度条渲染前输出[?25l隐藏光标,避免进度条刷新时光标乱跳,进度条执行完成后输出[?25h恢复光标显示。如果你的运行环境(如旧版Windows CMD、部分IDE内置控制台)不支持ANSI转义序列解析,就会把这串控制指令直接作为普通字符打印到控制台,不会执行对应的光标控制操作。
解决方法
- 方案1:关闭进度条的光标控制逻辑(最便捷)
直接修改创建Bar实例的代码,新增hide_cursor=False参数即可:
修改后with Bar(f'Progress {counter}/{times_to_do}:', max = len(filenames), hide_cursor=False) as bar:progress库不会再输出光标控制相关的转义序列,也就不会出现特殊字符。 - 方案2:更换兼容ANSI转义的运行终端
如果你想要保留隐藏光标的效果,避免进度条刷新时光标闪烁,可换用支持ANSI转义的终端,比如Windows Terminal、新版VS Code内置终端、Windows 10及以上版本的默认CMD(需开启虚拟终端功能)。
额外优化提示
你代码中使用的get_sheet_by_name是openpyxl的废弃方法,运行时会触发警告,建议替换为更简洁的写法:
sheet_name = book[which_to_edit]
内容的提问来源于stack exchange,提问作者Quax97
相关产品推荐
相关产品推荐

