笔者使用的python解释器版为
python3.7
,pycharm版本为pycharm2018.3
如无特殊说明,代码均在此环境执行
目录
一、pycharm控制台
二、修改项目编码对于控制台的影响
三、print函数的执行过程
四、print函数与sys.stdout.encoding的关系
五、python控制台与系统命令
一、pycharm控制台
常见的pycharm的控制台有三个:
运行输出控制台
,命令终端控制台
,python控制台
(ipython控制台
)
设置ipython控制台,如果安装有ipython则启动
是否有ipython,可以通过选择编译器查看
选择python控制台时,pycharm会自动转为ipython
二、修改项目编码对于控制台的影响
之前在研究乱码问题时,已经知道,修改项目编码会直接影响项目文件的显示
Pycharm 乱码问题(一) 文件和代码内容乱码
这里再来谈谈项目编码对与控制台的影响
首先,将项目编码由原来的UTF-8
改为GBK
然后分别使用python源文件和终端获取如下几个值
- 系统环境变量里是否包含PYTHONIOENCODING
- 系统环境变量PYTHONIOENCODING的值
- 是否是
tty设备
- 当前标准输出编码
- 注:
tty设备
包括如下几种
(1)串口端口终端
(2)控制终端
(3)伪终端
(4)控制台终端
(5)虚拟终端
详见 tty各种设备的情况
获取方式如下:
# 系统环境变量里是否包含PYTHONIOENCODING
os.environ.__contains__('PYTHONIOENCODING')
# 系统环境变量PYTHONIOENCODING的值
os.environ.get('PYTHONIOENCODING')
# 是否是tty设备
sys.stdout.isatty()
# 标准输出编码
sys.stdout.encoding
使用各个终端分别执行
run—运行控制台
代码如下:
import sys
import os
print("os.environ.__contains__('PYTHONIOENCODING'): ",
os.environ.__contains__('PYTHONIOENCODING'))
if os.environ.__contains__('PYTHONIOENCODING'):
print("os.environ.get('PYTHONIOENCODING'): ",
os.environ.get('PYTHONIOENCODING'))
print('sys.stdout.isatty(): ', sys.stdout.isatty())
print('sys.stdout.encoding: ', sys.stdout.encoding)
运行结果如下:
os.environ.__contains__('PYTHONIOENCODING'): True
os.environ.get('PYTHONIOENCODING'): GBK
sys.stdout.isatty(): False
sys.stdout.encoding: GBK
在pycharm中显示如图所示
输出编码sys.stdout.encoding
的值随着项目编码而改变,同时
环境变量PYTHONIOENCODING
的值也随之改变
此时,强制改变PYTHONIOENCODING
的值,不会影响sys.stdout.encoding
的值
os.environ.update(PYTHONIOENCODING='UTF-8')
print("os.environ.get('PYTHONIOENCODING'): ",
os.environ.get('PYTHONIOENCODING'))
print('sys.stdout.encoding: ', sys.stdout.encoding)
结果如下:
os.environ.get('PYTHONIOENCODING'): UTF-8
sys.stdout.encoding: GBK
Terminal—本地系统命令行终端
执行结果如下:
>>> import sys
>>> import os
>>> os.environ.__contains__('PYTHONIOENCODING')