Python os.getenv tilbage Ingen, manglende var på Windows 10

Indlæg af Hanne Mølgaard Plasc

Problem



(>=Python 3,4)


Med os.getenv() kan jeg ikke hente nogle env vars, som \%DATE\% eller \%TIME\%,


ex:


print(os.getenv('computername'))  # works
print(os.getenv('date'))  # not working, returning None
print(os.getenv('time'))  # not working, returning None


Så jeg kontrollerede listen over var env python kan opdage ved dette:
[print(var) for var in os.environ]
Det resulterer i en liste over mange env, men mangler date og time, i det mindste.
En mærkelig ting er, at den sidste genstand på listen er en liste over None objekter, sandsynligvis den manglende var env, men kun vises ved brug af den interaktive konsol .. og dermed ikke rigtig på listen .. eller måske nogle artefakter af den udskriftsfunktion, der anvendes i den interaktive konsol?


Prøve


import os
varenv = [var for var in os.environ]
[print(var) for var in varenv]`


med den interaktive konsol fra kommandolinjen


Endelig, når du er i windows cmd, fungerer echo \%date\% \%computername\% godt, uden forskellig behandling mellem disse var.


Jeg antager, at det måske er relateret til unicode, men har ikke fundet nogen svar endnu i mine undersøgelser: Hvorfor \%DATE\% eller \%TIME\% virker ikke mens \%computername\% bare fint?

Bedste reference


Faktisk er \%DATE\% og \%TIME\% ikke miljøvariabler.


Se denne Microsoft-dokumentation Brugeromgivelsesvariabler for at se listen over miljøvariabler i dit system. [16]