Python os.getenv返回None,Windows 10上缺少var
(>=Python 3.4) 使用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,但只有在使用交互式控制台时才会出现。。因此不在名单上。。或者交互控制台中使用的打印功能的一些工件 试一试 从命令行使用交互式控制台 最后
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]`