2012-05-08 7 views
13

Próbowałem to:Jak odczytać wartość zmiennej środowiska Windows w python?

os.environ['MyVar'] 

Ale to nie działa! Czy istnieje sposób odpowiedni dla wszystkich systemów operacyjnych?

+0

Mam ten błąd: KeyError: 'MyVar' –

+1

Czy jesteś pewien, że zdefiniowałeś zmienną we właściwy sposób? – Alexander

+1

Jak to zdefiniować? Dodałem go w Panelu sterowania-> System i zabezpieczenia -> System -> Zaawansowane ustawienia systemowe-> Zmienne środowiskowe –

Odpowiedz

30

Spróbuj użyć następujących czynności:

os.getenv('MyVar') 

Z documentation:

os.getenv(varname[, value])

Return the value of the environment variable varname if it exists, or value if it doesn’t. value defaults to None.

Availability: most flavors of Unix, Windows

Więc po przetestowaniu go:

>>> import os 
>>> os.environ['MyVar'] = 'Hello World!'  # set the environment variable 'MyVar' to contain 'Hello World!' 
>>> print os.getenv('MyVar') 
Hello World! 
>>> print os.getenv('not_existing_variable') 
None 
>>> print os.getenv('not_existing_variable', 'that variable does not exist') 
that variable does not exist 
>>> print os.environ['MyVar'] 
Hello World! 
>>> print os.environ['not_existing_variable'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in ? 
    File "/usr/lib/python2.4/UserDict.py", line 17, in __getitem__ 
    def __getitem__(self, key): return self.data[key] 
KeyError: 'not_existing_variable  

Twoja metoda będzie działać zbyt jeśli zmienna środowiska istnieje. Różnica w używaniu os.getenv polega na tym, że zwraca ona None (lub podaną wartość), podczas gdy os.environ['MyValue'] podaje wyjątek KeyError, gdy zmienna nie istnieje.

2
os.getenv('PATH') 

Możesz przetestować go z powyższym wierszem kodu. Wyświetli listę wszystkich ścieżek, które są ustawione.

0

Może być konieczne ponowne uruchomienie systemu Windows, aby móc odczytać zmienną środowiskową ustawioną za pomocą panelu sterowania.

+5

Lub po prostu ponowne uruchomienie konsoli. –