Heute schauen wir uns an, wie man Passwörter außerhalb von Skripten speichern kann.
import requests
API_KEY = "e1b8c7307dfc5d97e974as71350f44f8ab7"
city = input("Hallo! Bitte gib eine Stadt ein.")
url = f'https://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric'
data = requests.get(url).json()
temp = data['main']['temp']
humidity = data['main']['humidity']
print(f'In {city} beträgt die Temperatur {temp}. Die Luftfeuchtigkeit beträgt {humidity}%.')
Es ist immer mal wieder notwendig, dass ein Python Skript Zugriff auf sensible Daten bekommt. Das können Passwörter sein, aber auch z.B. API Keys oder Zugangsdaten zu einer Datenbank. Schauen wir uns kurz ein Beispiel an, das wir für ein anderes Tutorial schon mal geschrieben haben.
Unser Skript hat ein entscheidenes Problem: Wenn wir diesen API-Code jetzt beispielsweise auf Github teilen würden, wäre unser API Key für alle sichtbar im Netz. Und das wollen wir natürlich nicht.
Es gibt dafür aber eine bequeme Lösung. Die Idee ist, dass wir den API Key lokal, also auf unserem Rechner speichern und dann einfach in das Skript importieren, wenn wer gebraucht wird. Und dafür nutzen wir die .bash_profile-Datei. Dafür gehen wir zunächst ins Terminal und geben diesen Befehl ein:
nano .bash_profile
Damit starten wir den Nano-Texteditor und öffnen mit ihm die Datei .bash_profile
. In dieser Datei können wir jetzt unseren API-Key hinterlegen.
export wetter_api_key="e1b8c7307dfc5d97e974as71350f44f8ab7"
Jetzt können wir die Datei auch schon verlassen. Dafür drücke ich Command+X und anschließend Y und dann Enter. Damit unsere Änderungen jetzt auch wirksam werden, führen wir noch folgenden Befehl aus:
source .bash_profile
Jetzt testen wir kurz aus, ob der API-Key auffindbar ist. Dafür lassen wir uns den Key im Terminal ausgeben:
echo $wetter_api_key<br>-> e1b8c7307dfc5d97e974as71350f44f8ab7
Weiter geht’s im Quellcode. Um auf die Datei zuzugreifen, die wir gerade erstellt haben, nutzen wir das Modul os. Und greifen dann auf unseren Key zu.
import os
API_KEY = os.environ.get('wetter_api_key')
Okay, probieren wir das Ganze aus!
python3 weather.py
Hallo! Bitte gib eine Stadt ein.Leipzig
In Leipzig beträgt die Temperatur 17.08. Die Luftfeuchtigkeit beträgt 79%.
Okay, soviel erstmal für heute. Fragen und Wünsche könnt ihr wie immer in der Kommentarspalte dalassen, ich antworte bei passenden Fragen mit kurzen Videoantworten. Und jetzt viel Spaß beim Ausprobieren, bleibt neugierig und bis bald!
✅ Hier noch einmal der komplette Quellcode:
import requests
import os
API_KEY = os.environ.get('wetter_api_key')
city = input("Hallo! Bitte gib eine Stadt ein.")
url = f'https://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric'
data = requests.get(url).json()
temp = data['main']['temp']
humidity = data['main']['humidity']
print(f'In {city} beträgt die Temperatur {temp}. Die Luftfeuchtigkeit beträgt {humidity}%.')