的Python os.getenv返回无,在Windows 10
问题描述:
(> = 3.4的Python)的Python os.getenv返回无,在Windows 10
失踪变种随着os.getenv()
,我不能够找回一些ENV瓦尔,像%DATE%
或%TIME%
,
例如:
print(os.getenv('computername')) # works
print(os.getenv('date')) # not working, returning None
print(os.getenv('time')) # not working, returning None
所以我检查VAR ENV蟒蛇的列表可以通过此检测: [print(var) for var in os.environ]
这导致很多ENV的列表,但缺少date
,和0123至少是。 奇怪的是,列表中的最后一项是None
对象的列表,可能是缺少的var env,但仅在使用交互式控制台时出现,因此不在列表中,或者可能是某些印刷品的工件交互式控制台中使用的函数?
尝试
import os
varenv = [var for var in os.environ]
[print(var) for var in varenv]`
与命令行
最后的交互式控制台,当你是在cmd中的窗户,echo %date% %computername%
的伟大工程,这些变种之间没有不同的处理。
我推测它可能与unicode有关,但在我的研究中还没有找到任何答案:为什么%DATE%
或%TIME%
不能正常工作,而%computername%
就好了?
'DATE'和'TIME'是cmd.exe shell中可用的假环境变量,以及'CD','RANDOM'和'ERRORLEVEL'。 Windows API还为当前目录('__CD__')和应用程序目录('__APPDIR__')以及以'='开头的'hidden'环境变量(如用于工作目录的环境变量)在每个驱动器上,例如D =驱动器的'= D:'。这些只能通过直接调用'GetEnvironmentVariable'来访问。 – eryksun
看来%DATE%和%TIME%是[动态环境变量](https://en.wikipedia.org/wiki/Environment_variable#Windows)。但我找不到一个很好的方式来检索python中的这些var。 –
@GuillaumeLebreton,它们只是cmd.exe中的假变量。如果您因为某种原因需要它们,请使用'subprocess.check_output('cmd/u/c“echo%{}%''.format(name))。decode('utf-16le')。rstrip()',for一个给定的'名称'如''DATE“'。我们需要使用UTF-16来确保没有Mojibake或最适合的编码。 – eryksun