Όταν εργάζεστε με την Python, μπορεί να συναντήσετε το os.getenv
και os.environ
λειτουργίες. Ενώ και οι δύο αυτές λειτουργίες χρησιμοποιούνται για πρόσβαση σε μεταβλητές περιβάλλοντος, λειτουργούν με ελαφρώς διαφορετικούς τρόπους. Σε αυτήν την ανάρτηση ιστολογίου, θα διερευνήσουμε τις διαφορές μεταξύ os.getenv
και os.environ
και συζητήστε ποιο είναι καλύτερο να χρησιμοποιήσετε σε διαφορετικές καταστάσεις.
Τι είναι οι μεταβλητές περιβάλλοντος;
Πριν βουτήξουμε στις διαφορές μεταξύ os.getenv
και os.environ
ας συζητήσουμε πρώτα ποιες είναι οι μεταβλητές περιβάλλοντος.
Οι μεταβλητές περιβάλλοντος είναι ένας τρόπος αποθήκευσης και διαχείρισης ρυθμίσεων διαμόρφωσης που χρησιμοποιούνται από το λειτουργικό σύστημα και τα προγράμματα που εκτελούνται σε αυτό. Αυτές οι μεταβλητές είναι ουσιαστικά ζεύγη κλειδιού-τιμής, όπου το κλειδί είναι το όνομα της μεταβλητής και η τιμή είναι η τιμή που εκχωρείται σε αυτήν τη μεταβλητή.
Μερικά κοινά παραδείγματα μεταβλητών περιβάλλοντος περιλαμβάνουν:
PATH
– που παραθέτει τους καταλόγους που θα αναζητήσει το λειτουργικό σύστημα για εκτελέσιμα αρχείαHOME
– που καθορίζει τον αρχικό κατάλογο του τρέχοντος χρήστηUSER
– που περιέχει το όνομα του τρέχοντος χρήστη
os.getenv
ο os.getenv
Η συνάρτηση είναι μια ενσωματωμένη συνάρτηση Python που σας επιτρέπει να ανακτήσετε την τιμή μιας συγκεκριμένης μεταβλητής περιβάλλοντος. Εδώ είναι η βασική σύνταξη για χρήση os.getenv
:
os.getenv(variable_name, default_value)
ο variable_name
παράμετρος είναι το όνομα της μεταβλητής περιβάλλοντος που θέλετε να ανακτήσετε. ο default_value
Η παράμετρος είναι μια προαιρετική παράμετρος που καθορίζει την προεπιλεγμένη τιμή που θα επιστραφεί εάν δεν έχει οριστεί η μεταβλητή περιβάλλοντος. Εάν έχει οριστεί η μεταβλητή περιβάλλοντος, os.getenv
επιστρέφει την τιμή της μεταβλητής περιβάλλοντος ως συμβολοσειρά.
Εδώ είναι ένα παράδειγμα χρήσης os.getenv
για να ανακτήσετε την τιμή του HOME
μεταβλητή περιβάλλοντος:
import os
home_directory = os.getenv('HOME')
print(home_directory)
Σε αυτό το παράδειγμα, os.getenv
χρησιμοποιείται για την ανάκτηση της τιμής του HOME
μεταβλητή περιβάλλοντος. Αν το HOME
έχει οριστεί η μεταβλητή περιβάλλοντος, home_directory
θα οριστεί στην τιμή του. Εάν δεν έχει οριστεί, home_directory
θα οριστεί σε None
.
os.περιβάλλον
ο os.environ
Το λεξικό είναι ένα ενσωματωμένο λεξικό Python που περιέχει όλες τις μεταβλητές περιβάλλοντος που έχουν οριστεί επί του παρόντος στο λειτουργικό σύστημα. Ακολουθεί ένα παράδειγμα για τον τρόπο πρόσβασης στο os.environ
λεξικό:
import os
for key, value in os.environ.items():
print(key, value)
Σε αυτό το παράδειγμα, χρησιμοποιούμε έναν βρόχο for για να επαναλάβουμε όλα τα ζεύγη κλειδιού-τιμής στο os.environ
λεξικό και εκτυπώστε τα.
Μπορείτε επίσης να αποκτήσετε πρόσβαση σε μια συγκεκριμένη μεταβλητή περιβάλλοντος χρησιμοποιώντας το []
χειριστή, ως εξής:
import os
home_directory = os.environ['HOME']
print(home_directory)
Σε αυτό το παράδειγμα, os.environ['HOME']
ανακτά την τιμή του HOME
μεταβλητή περιβάλλοντος.
Διαφορές μεταξύ os.getenv και os.environ
Η κύρια διαφορά μεταξύ os.getenv
και os.environ
είναι αυτό os.getenv
ανακτά την τιμή μιας συγκεκριμένης μεταβλητής περιβάλλοντος, ενώ os.environ
περιέχει όλες τις μεταβλητές περιβάλλοντος που έχουν οριστεί επί του παρόντος στο λειτουργικό σύστημα.
Ακολουθούν μερικές άλλες διαφορές που πρέπει να έχετε κατά νου:
os.getenv
παίρνει ένα προαιρετικόdefault_value
παράμετρος, η οποία σας επιτρέπει να καθορίσετε μια προεπιλεγμένη τιμή που θα επιστρέψετε εάν δεν έχει οριστεί η μεταβλητή περιβάλλοντος.os.environ
δεν έχει αυτή την επιλογή.- Εάν χρησιμοποιείτε
os.environ
για να τροποποιήσετε μια μεταβλητή περιβάλλοντος, η αλλαγή θα αντικατοπτρίζεται σε όλες τις υποδιεργασίες που ξεκινούν από το πρόγραμμά σας Python. Εάν χρησιμοποιείτεos.getenv
για να τροποποιήσετε μια μεταβλητή περιβάλλοντος, η αλλαγή θα επηρεάσει μόνο το πρόγραμμά σας Python. os.getenv
επιστρέφειNone
εάν η καθορισμένη μεταβλητή περιβάλλοντος δεν είναι
Must Learn – Ασφαλίστε το SECRET_KEY της εφαρμογής Django με ένα αρχείο .env