我正在使用os.getenv()将密码返回到python脚本。密码包含大写字母I,当我将其保存为环境变量时,它会正确保存(保存后,如果要编辑并将其复制并粘贴到记事本中,它将正确显示)。但是,python os.getenv()方法以小写字母l返回大写字母I。还有其他人遇到过这个问题,并且/或者还有其他方法可以用来返回环境变量吗?
答案 0 :(得分:0)
不,别无选择,这不是Python的错。
在Windows上,当Python启动时,os.environ
映射是从_wenviron
global初始化的。 (环境变量在开始运行时会被赋予该过程,如果稍后更改了环境变量,则需要重新启动该过程)。 Windows为Python提供的结构为UTF-16,其键始终为大写,值不透明的Unicode文本。
Python将数据从UTF-16解码到Python str
对象(Python 2中为unicode
),并从中创建一个os.environ
映射。然后,该映射仅保持键的大写性质,而没有其他更改。 os.getenv
是使用os.environ.get()
的辅助函数。没有其他可用的API。
如果看到意外数据,则说明您在设置变量方面有误,或者在Python启动后更改了变量。将I
(大写印度)和l
(小写的利马)混合起来很容易;最好只是完全避免使用那些容易混淆的字符,例如0
(数字零),O
(大写的奥斯卡)和1
(数字)。