Différence entre les os.la fonction getenv et les os.environ.obtenir?

quelle Est la différence entre ces deux? Quand dois-je utiliser l'un plutôt que l'autre? Est l'un de ces obsolète? Ils semblent avoir exactement les mêmes fonctionnalités.

>>> os.getenv('TERM')
'xterm'
>>> os.environ.get('TERM')
'xterm'

>>> os.getenv('FOOBAR', "not found") == "not found"
True
>>> os.environ.get('FOOBAR', "not found") == "not found"
True
77
demandé sur André Staltz 2013-06-04 21:59:42

3 réponses

une différence observée (Python27):

os.environ soulève une exception si la variable environnementale n'existe pas. os.getenv ne déclenche pas une exception, mais renvoie None

33
répondu giwyni 2017-01-13 03:53:13

voir ce fil apparenté . Fondamentalement, os.environ se trouve à l'importation, et os.getenv est une enveloppe à os.environ.get , au moins en CPython.

EDIT: pour répondre à un commentaire, dans CPython, os.getenv est fondamentalement un raccourci à os.environ.get ; depuis os.environ est chargé à l'importation de os , et seulement alors, la même chose vaut pour os.getenv .

39
répondu W. Conrad Walden 2017-05-23 10:31:29

en Python 2.7 avec iPython:

>>> import os
>>> os.getenv??
Signature: os.getenv(key, default=None)
Source:
def getenv(key, default=None):
    """Get an environment variable, return None if it doesn't exist.
    The optional second argument can specify an alternate default."""
    return environ.get(key, default)
File:      ~/venv/lib/python2.7/os.py
Type:      function

donc nous pouvons conclure que os.getenv est juste un simple enveloppement autour de os.environ.get .

15
répondu Zulu 2017-02-05 22:48:38