软件测试学习 之 Python 关于控制台编码的几条假设及验证

本文详细探讨了Python在不同环境下控制台编码的影响,包括项目编码、sys.stdout.encoding、Terminal与Python Console之间的关系。通过一系列假设验证,揭示了编码设置如何影响程序输出和终端显示,特别是对UTF-8和GBK编码的处理。文章还讨论了在不同场景下如何修改标准输出编码,以及在不同环境中执行Python文件时的编码行为。
摘要由CSDN通过智能技术生成

笔者使用的python解释器版为python3.7,pycharm版本为pycharm2018.3
如无特殊说明,代码均在此环境执行

几条假设

  • √ 1. 项目编码会影响程序运行控制台python控制台,不影响本地系统终端

  • √ 2. 项目编码会影响运行控制台标准输出编码控制台编码

  • √ 3. 项目编码会影响python控制台标准输出编码,不影响控制台编码

  • ?4. Editplus中修改sys.out.encoding会同时影响标准输出编码控制台编码

  • √ 5. pythonipython内核一致,只是终端交互方式不同

  • √ 6. 从命令行窗口切入python或者ipython后,编码统一为utf-8,与命令行窗口隔离

  • √ 7. 在python或者ipython终端修改标准输出编码sys.out.encoding1-2次之后,
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
    修改1次,运行终端和Terminal命令行终端正常,python控制台会延迟到下一个命令输出,
    修改2次,直接报错,无法输出
    ValueError: I/O operation on closed file.
    可以改用
    sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8', line_buffering=True)
    或者省略参数line_buffering
    sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')

  • √ 8. 在python控制台使用os.system(‘python xx.py’)执行python文件等同于在命令行执行‘python xx.py’
    ipython控制台使用%run执行python文件等同于在ipython中嵌入python语句

  • √ 9. 在python控制台执行文件—os.system(‘python xx.py’)时,等同于将输出结果作为print的参数,标准输出编码为python默认编码UTF-8
    在python控制台执行系统命令(如dir ehco等),分两种情况
    (1)在从Terminal切入python控制台执行,等同于将输出结果作为print的参数,标准输出编码为python默认编码UTF-8
    (2)在从Pycharm进入python console

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值