Python os.getenv () возвращает неверное значение в Windows - есть ли альтернатива? - PullRequest
0 голосов
/ 22 ноября 2018

Я использую os.getenv (), чтобы вернуть пароль скрипту Python.Пароль содержит заглавную букву I, и когда я сохраняю его как переменную среды, он сохраняется правильно (после сохранения, если я иду редактировать его, копировать и вставлять в блокнот, он отображается правильно).Однако метод python os.getenv () возвращает заглавную букву I в нижнем регистре l.Кто-нибудь еще сталкивался с этим и / или есть какой-нибудь другой метод, который я могу использовать, чтобы возвратить переменную env?

1 Ответ

0 голосов
/ 22 ноября 2018

Нет, альтернативы нет, и это не может быть ошибкой Python.

В Windows отображение os.environ инициализируется из _wenviron global при запуске Python,(Переменные среды передаются процессу при его запуске, если вы позже изменили переменные среды, вам необходимо перезапустить процесс).Структура, которую Windows предоставляет Python, представляет собой UTF-16 с ключами всегда в верхнем регистре, значениями непрозрачного текста Unicode.

Python декодирует данные из объектов UTF-16 в объекты Python str (unicode в Python 2), исоздает отображение os.environ из этого.Тогда это отображение просто поддерживает прописные буквы, больше ничего не меняется.os.getenv - это вспомогательная функция, которая использует os.environ.get().Нет другого доступного или необходимого API.

Если вы видите непредвиденные данные, вы либо допустили ошибку при установке переменной, либо изменили переменную после того, как Python уже запущен.Достаточно просто смешать I (столица Индии) и l (строчная Лима);Лучше всего избегать таких запутанных символов, как 0 (номер ноль), O (прописной Оскар), 1 (номер один) в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...