Python os.getenv返回None,Windows 10上缺少var

Python os.getenv返回None,Windows 10上缺少var,python,windows,python-3.x,batch-file,windows-10,Python,Windows,Python 3.x,Batch File,Windows 10,(>=Python 3.4) 使用os.getenv(),我无法检索某些环境变量,如%DATE%或%TIME% 例: 因此,我检查了python可以通过以下方式检测的var env列表: [在os.environ中打印(var)变量] 它会生成一个环境批次列表,但至少缺少日期,以及时间。 奇怪的是,列表的最后一项是None对象的列表,可能是缺少的var env,但只有在使用交互式控制台时才会出现。。因此不在名单上。。或者交互控制台中使用的打印功能的一些工件 试一试 从命令行使用交互式控制台 最后

(>=Python 3.4)

使用
os.getenv()
,我无法检索某些环境变量,如
%DATE%
%TIME%

例:

因此,我检查了python可以通过以下方式检测的var env列表:
[在os.environ中打印(var)变量]
它会生成一个环境批次列表,但至少缺少
日期
,以及
时间
。 奇怪的是,列表的最后一项是
None
对象的列表,可能是缺少的var env,但只有在使用交互式控制台时才会出现。。因此不在名单上。。或者交互控制台中使用的打印功能的一些工件

试一试

从命令行使用交互式控制台

最后,当您在windows cmd中时,
echo%date%%computername%%
工作得很好,在这些变量之间没有不同的处理


我认为这可能与unicode有关,但在我的研究中还没有找到任何答案:为什么
%DATE%
%TIME%
%computername%
正常的情况下不工作?

事实上,
%DATE%
%TIME%
不是环境变量


请参阅此Microsoft文档以查看系统的环境变量列表。

DATE
TIME
是cmd.exe shell中可用的假环境变量,以及
CD
RANDOM
ERRORLEVEL
。Windows API还为当前目录(
\uuuuuu CD\uuuuuu
)和应用程序目录(
\uuuuuuu APPDIR\uuuuuu
)提供了两个虚拟变量,以及以
=
开头的“隐藏”环境变量,例如每个驱动器上的工作目录的变量,例如D:drive的
=D:
。只能通过直接调用
GetEnvironmentVariable
来访问这些变量。似乎%DATE%和%TIME%是可用的。但我找不到在python中检索这些变量的好方法。@GuillaumeLebreton,它们只是cmd.exe中的假变量。如果出于某种原因需要它们,请使用
子流程。检查_输出('cmd/u/c“echo%{}%'”。格式(名称))。解码('utf-16le')。rstrip()
,以获得给定的
名称
,例如
“DATE”
。我们需要使用UTF-16来确保没有mojibake或最佳匹配编码。
print(os.getenv('computername'))  # works
print(os.getenv('date'))  # not working, returning None
print(os.getenv('time'))  # not working, returning None
import os
varenv = [var for var in os.environ]
[print(var) for var in varenv]`