2017-02-15 3 views
0

(> = 파이썬 3.4)파이썬은 <code>os.getenv()</code>으로 윈도우 10

에 VAR 누락 없음을 반환하지 os.getenv, 난, %DATE% 또는 %TIME% 같은 일부 ENV는 바르 검색 할 수 없습니다입니다

예 :

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 누락 및 time 이상. 이상한 점은 목록의 마지막 항목 인 None 개체 목록입니다. 아마도 var env가 누락되었지만 대화 형 콘솔을 사용할 때만 나타납니다. 목록에 없거나 인쇄물의 일부 아티팩트 일 것입니다. 대화 형 콘솔에서 사용되는 함수?

당신이 cmd를 창에있을 때, echo %date% %computername%이 VAR 사이에 다른 처리와 함께, 좋은 작품, 명령 행 마지막

에서 대화 형 콘솔

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

을보십시오.

아마도 유니 코드와 관련이 있다고 가정하지만 내 연구에서는 아직 답변을 찾지 못했습니다. %DATE% 또는 %TIME%이 작동하지 않는 이유는 %computername%입니다.

답변

1

실제로 %DATE%%TIME%은 환경 변수가 아닙니다.

시스템의 환경 변수 목록을 보려면이 Microsoft 설명서 User Environment Variables을 참조하십시오.

+0

'DATE'와'TIME'은'CD','RANDOM'과'ERRORLEVEL'과 함께 cmd.exe 셸에서 사용 가능한 가짜 환경 변수입니다. Windows API에는 현재 디렉토리 ('__CD__')와 응용 프로그램 디렉토리 ('__APPDIR__')에 대한 몇 가지 가상 변수와'= '로 시작하는'숨겨진 '환경 변수가 있습니다 (예 : 작업 디렉토리 D : 드라이브의 경우'= D :'와 같이 각 드라이브에. 이것들은'GetEnvironmentVariable'을 직접 호출하여 접근 할 수 있습니다. – eryksun

+0

% DATE % 및 % TIME %는 [동적 환경 변수] (https://en.wikipedia.org/wiki/Environment_variable#Windows)입니다. 하지만 난 파이썬에서 이러한 var을 검색하는 좋은 방법을 찾을 수 없습니다. –

+0

@GuillaumeLebreton, 그들은 cmd.exe의 가짜 변수 일뿐입니다. 어떤 이유인지 알아 내려면'subprocess.check_output ('cmd/u/c "echo % {} %"'. format (name)) .deode ('utf-16le'). rstrip()', for ''DATE ''와 같은 주어진'name'. mojibake 나 best-fit 인코딩이 없도록 UTF-16을 사용해야합니다. – eryksun