PythonPodcast 50 - itnett/FTD02H-N GitHub Wiki

Python Symboler og Konsepter forklart i detalj – Del 5 🌟

I denne delen av Python-opplæringen skal vi utforske avanserte konsepter som datastrukturer, API-integrasjon, avansert filbehandling, og vi vil også introdusere bruk av GUI (Grafisk Brukergrensesnitt). Vi skal også se nærmere på hvordan Python kan integreres med eksterne applikasjoner og verktøy.


🛠️ Symboler og konsepter i Python – Del 5

  1. json (Jobbe med JSON-data)
    ➡️ Norsk: JSON er et vanlig format for å lagre og overføre data mellom systemer. Python har innebygd støtte for å jobbe med JSON-data.
    ➡️ Engelsk: JSON is a common format for storing and transferring data between systems. Python has built-in support for working with JSON data.
import json

# Konvertere Python-objekt til JSON
data = {"navn": "Anna", "alder": 30}
json_str = json.dumps(data)
print(json_str)  # Output: {"navn": "Anna", "alder": 30}

# Konvertere JSON-streng til Python-objekt
data = json.loads(json_str)
print(data["navn"])  # Output: Anna
  1. API-integrasjon
    ➡️ Norsk: API-er tillater ulike applikasjoner å kommunisere med hverandre ved å sende og motta data over internett.
    ➡️ Engelsk: APIs allow different applications to communicate by sending and receiving data over the internet.
import requests

# Eksempel på API-forespørsel til et vær-API
url = "https://api.weatherapi.com/v1/current.json?key=ditt_api_key&q=Oslo"
respons = requests.get(url)
data = respons.json()
print(f"Været i Oslo: {data['current']['temp_c']}°C")
  1. csv (Jobbe med CSV-filer)
    ➡️ Norsk: CSV-filer er tekstfiler der data er separert med komma. Python kan enkelt lese og skrive CSV-filer ved hjelp av csv-modulen.
    ➡️ Engelsk: CSV files are text files where data is separated by commas. Python can easily read and write CSV files using the csv module.
import csv

# Lese fra en CSV-fil
with open('data.csv', 'r') as fil:
    leser = csv.reader(fil)
    for rad in leser:
        print(rad)

# Skrive til en CSV-fil
with open('output.csv', 'w', newline='') as fil:
    skribent = csv.writer(fil)
    skribent.writerow(['Navn', 'Alder'])
    skribent.writerow(['Anna', 30])

🧩 Avansert Filbehandling og GUI

  1. shutil (Filkopiering og flytting)
    ➡️ Norsk: shutil gir muligheten til å kopiere, flytte og håndtere filer og mapper.
    ➡️ Engelsk: shutil provides the ability to copy, move, and manage files and directories.
import shutil

# Kopiere en fil
shutil.copy("original.txt", "kopi.txt")

# Flytte en fil
shutil.move("kopi.txt", "ny_mappe/kopi.txt")
  1. tkinter (Lage et GUI)
    ➡️ Norsk: tkinter er Pythons standardbibliotek for å lage grafiske brukergrensesnitt (GUI).
    ➡️ Engelsk: tkinter is Python's standard library for creating graphical user interfaces (GUI).
import tkinter as tk

# Opprett et enkelt vindu
vindu = tk.Tk()
vindu.title("Mitt første GUI")

# Legg til en etikett
etikett = tk.Label(vindu, text="Hei, verden!")
etikett.pack()

# Start GUI
vindu.mainloop()
  1. Event-drevet programmering
    ➡️ Norsk: GUI-programmer baseres ofte på hendelser. Brukerhandlinger som å trykke på knapper eller skrive inn tekst er hendelser som trigges av programmet.
    ➡️ Engelsk: GUI programs are often event-driven. User actions like pressing buttons or entering text trigger events handled by the program.
def trykk_knapp():
    print("Knappen ble trykket!")

knapp = tk.Button(vindu, text="Trykk meg!", command=trykk_knapp)
knapp.pack()

🌍 Jobbe med Eksterne API-er og Biblioteker

  1. API Autentisering
    ➡️ Norsk: Mange API-er krever autentisering med API-nøkler eller OAuth for å sikre data og bruk.
    ➡️ Engelsk: Many APIs require authentication using API keys or OAuth to secure data and usage.
api_key = "ditt_api_nøkkel"
url = f"https://api.example.com/data?apikey={api_key}"
  1. OAuth for API-tilgang
    ➡️ Norsk: OAuth er en standard for å autorisere tilgang til API-er uten å utlevere passord.
    ➡️ Engelsk: OAuth is a standard for authorizing access to APIs without exposing passwords.
# Bruk av OAuth via requests_oauthlib
from requests_oauthlib import OAuth1Session

oauth = OAuth1Session(
    client_key="din_client_key",
    client_secret="din_client_secret",
    resource_owner_key="din_resource_key",
    resource_owner_secret="din_resource_secret"
)
response = oauth.get("https://api.example.com/protected-resource")

🔑 Sikkerhet i Python-applikasjoner

  1. Unngå SQL Injection
    ➡️ Norsk: SQL Injection er en alvorlig sårbarhet hvor en angriper kan kjøre skadelig SQL-kode. Bruk alltid parameteriserte spørringer for å unngå dette.
    ➡️ Engelsk: SQL Injection is a serious vulnerability where an attacker can execute malicious SQL code. Always use parameterized queries to prevent this.
import sqlite3

# Bruk parameteriserte spørringer for å unngå SQL Injection
conn = sqlite3.connect('database.db')
cursor = conn.cursor()

navn = "Anna"
cursor.execute("SELECT * FROM brukere WHERE navn = ?", (navn,))
  1. XSS (Cross-Site Scripting)
    ➡️ Norsk: XSS er en sårbarhet som tillater angripere å kjøre ondsinnet JavaScript på en nettside. Unngå dette ved å escape brukerinput.
    ➡️ Engelsk: XSS is a vulnerability that allows attackers to execute malicious JavaScript on a website. Prevent this by escaping user input.
# Unngå XSS ved å escape HTML-koder
fra html import escape
user_input = "<script>alert('XSS')</script>"
safe_input = escape(user_input)

🎯 Oppsummering Del 5:
I denne delen har vi lært om avansert filbehandling, API-integrasjon, og hvordan du kan lage et grafisk brukergrensesnitt med tkinter. Vi har også sett på hvordan vi kan jobbe sikkert med API-er og beskytte applikasjoner mot vanlige sikkerhetstrusler som SQL Injection og XSS.


Neste del vil fokusere på mer avanserte Python-emner som datastrukturer, avansert feilhåndtering, og jobbe med større prosjekter!🚀

⚠️ **GitHub.com Fallback** ⚠️