==== Progamm ===== ==== KW 12 ==== === Ziele === * [[informatik-glf26#Bericht|Bericht]] wird abgeschlossen mit mindestens zwei eigenen Analysen. Deadline: ** 19. April 2026, 23:59** als PDF via Teams. * Vorträge sind begonnen. Rahmenbedingungen am Ende dieser Stunde. === Aufträge === * Der Bericht soll den ganzen Prozess definieren, dazu sind auch Screenshots benötigt: Probiere ''PrtSc'' und ''Alt+PrtSc'' aus. * **Dokumentation**: Unterschied Word und PDF. Welche Grafikformate sollen wann verwendet werden? Wieso? === Vortragsthemen === * Surveillance Capitalism (aus dem Film) * Social-Media-Landmark-Prozess (23SMCV03371), ein erster Entscheid fiel am 25. März 2026 * Vergleich mehrerer KIs (OpenAI, Gemini, DeepSeek, Claude im Minimum) bzgl. Qualität, Preisen und Datenschutz. ==== KW 11 ==== === Ziele === * Analysen, welche durchgeführt werden, sind definiert und festgehalten. * [[informatik-glf26#Bericht|Bericht]] in erster Version ist angelegt (z.B. Gliederung) === Aufträge === * Analysen definieren (z.B. nach Wochentag, Ferien vs. Schule, Zeiten von Hobbies, Stundenplan, etc.) * Abschnitt zur [[informatik-glf26#Zellformatierung|Zellformatierung]] in Excel durcharbeiten und allenfalls Zeit in Daten anpassen (Zeitzone!) * Analysen in Excel durchführen, basierend auf letzter Woche, allenfalls weitere Spalten hinzufügen, hilfreiche Funktionen können sein: * [[https://support.microsoft.com/de-de/office/kalenderwoche-funktion-e5c43a03-b4ab-426c-b411-b18c13c75340|Kalenderwoche]] * [[https://support.microsoft.com/de-de/office/monat-funktion-579a2881-199b-48b2-ab90-ddba0eba86e8|Monat]] * **Dokumentation**: Verschieden Zellformatierungen sind erklärt. Welche Datentypen können wie formatiert werden. === Bericht === Der Bericht soll im Minimum folgende Aspekte enthalten: * Kurzer Abschnitt zur Beschaffung und Aufbereitung der Daten. * Überblick über die Daten (was wurde verwendet, wie viele Daten sind es, etc.) * Dokumentation der eigenen Analysen mit Tabellen und oder Grafiken, welche die definierten Fragen beantwortet. Eigene Idee bei der Analyse erhalten mehr Punkte. * Einen Abschnitt, welcher die Rolle von Social Media, deren Nutzung und möglichen Konsequenzen bespricht. Dieser kann sich entweder auf den Film [[https://thesocialdilemma.com/|The Social Dilemma]], aktuelle Entwicklungen wie z.B. [[https://www.srf.ch/news/international/social-media-vor-gericht-junge-frau-macht-instagram-co-fuer-ihre-sucht-verantwortlich|Beitrag von SRF zum Sucht-Prozess]], einem [[https://www.rsi.ch/rete-uno/programmi/informazione/modem/Relazioni-pericolose-giovani-e-social-media--1556034.html|Beitrag der RSI]] oder [[https://fginfo.ksbg.ch/dokuwiki/lib/exe/fetch.php?media=lehrkraefte:ks:informatik-glf4-26:nzzas2060308_giftschrank_techkonzerne.pdf|NZZ-Artikel]] mit alternativen Möglichkeiten beziehen. === Zellformatierung === == Zellformatierung in Excel: Prozent und Uhrzeit == Excel speichert Zahlen oft ganz anders, als sie uns auf dem Bildschirm angezeigt werden. In dieser kurzen Lektion findet ihr durch Ausprobieren selbst heraus, wie Excel intern mit **Prozenten** und **Uhrzeiten** rechnet. //Tipp: Speichere dein Dokument regelmässig und nutze bei Bedarf Ctrl+Z (Rückgängig)!// == Teil 1: Prozentdarstellung == Trage in einem leeren Arbeitsblatt in die Zellen A1 bis A3 die Werte ''1'', ''0.5'' und ''25'' ein. Markiert diese drei Zellen und klickt im Reiter **Start** auf das **%**-Symbol (alternativ: Rechtsklick -> **Zellen formatieren...** -> **Prozent**). Beobachtet das Ergebnis: Aus der 1 wird plötzlich 100%, aus 0.5 wird 50% und aus der 25 wird 2500%. **Frage:** Welche Dezimalzahl musst du in eine leere Zelle eintippen, wenn du nach dem Klick auf das Prozent-Symbol exakt **25%** dort stehen haben wollt? Bitte ausprobieren! == Teil 2: Wie Excel die Zeit misst == Uhrzeiten speichert Excel nicht als Stunden und Minuten, sondern als Bruchteil eines ganzen Tages. Trage dazu in eine leere Spalte die Dezimalzahlen ''0'', ''0.5'', ''0.75'' und ''1.25'' untereinander ein. Markiere die Zellen, wählt über Rechtsklick -> **Zellen formatieren...** die Kategorie **Uhrzeit** und entscheide dich für ein Format, das Stunden und Minuten anzeigt (z. B. 13:30). Das Ergebnis offenbart das interne System: 0 ist Mitternacht (00:00), 0.5 ist exakt ein halber Tag (12:00), 0.75 ist 18:00 Uhr und 1.25 springt sogar auf 06:00 Uhr am nächsten Tag. **Frage:** Trage die aktuelle Uhrzeit (z.B. 14:30) in eine neue, unformatierte Zelle ein. Ändere das Format dieser Zelle über das Dropdown-Menü im Reiter **Start** nun zurück auf **Standard**. Welche Dezimalzahl kommt zum Vorschein und wie lässt sich dieser Wert mathematisch herleiten? **Frage:** Wie könnte entsprechend die Zeit um eine definierte Anzahl Stunden umgerechnet werden (Zeitzonen)? Die Idee ist, 9/24 (relativer Anteil von 9 Stunden an einem Tag) dazu zu addieren {{ :lehrkraefte:ks:informatik-glf4-26:excel_adapt.png?nolink&400 |}} ==== KW 10 ==== === Ziele === * Daten sind ergänzt um Spalten Wochentag, Stunde (Uhrzeit) und Wochenende. * Jede/r hat mehrere Analysen im Kopf, welche sie/er mit Pivot-Tabellen und/oder Filtern beantworten kann. * Erste Analysen sind in Excel durchgeführt, dokumentiert und gespeichert. === Aufträge === * [[https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:ks:teaching:informatik-glf26#knaus_best-of-_excel-_shortcuts|Excel-Shortcuts]] durcharbeiten. Arbeiten mit Shortcuts macht arbeiten mit Excel unglaublich viel schneller. * Untenstehende Excel-Funktionen nachlesen resp. ausprobieren: - [[https://support.microsoft.com/de-de/office/wochentag-funktion-60e44483-2ed1-439f-8bd0-e404c190949a|Wochentag]] - [[https://support.microsoft.com/de-de/office/stunde-funktion-a3afa879-86cb-4339-b1b5-2dd2d7310ac7|Stunde]] - [[https://support.microsoft.com/de-de/office/mittelwert-funktion-047bac88-d466-426c-a32b-8f33eb960cf6|Mittelwert]] * [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/Analyse%20mit%20Excel_%20Pivot%20und%20Filter-20210408_074604.mp4?csf=1&web=1&e=WS7BOB|Einführungsvideo]] zur Datenanalyse mit Pivot-Tabellen und Filtern schauen. Achtung: Im Video werden YouTube-Daten verwendet, deshalb die Referenz zu "Video schauen" * Erste Analyse der eigenen Daten durchführen, z.B.: Wann (welche Stunde) like ich am meisten Beiträge? * **Dokumentation** ist ergänzt um "Was sind Pivottabellen"? Wie funktioniert die Funktion "WOCHENTAG"? Welches sind nützliche Short-cuts in Excel? === Knaus' Best-of-(Excel-)Shortcuts === Alle Excel-Shortcuts finden sich in dieser [[https://support.microsoft.com/de-de/office/tastenkombinationen-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f|Liste]]. Die Shortcuts bis und mit F1 funktionieren bei den meisten gängingen (Office) Applikationen. | ^ Shortcut | ^ Beschreibung | | Ctrl+Pfeil | Bewegt den Cursor ans Ende des Blocks der aktiven Zelle in Richtung des Pfeils| | Shift+Pfeil | Markiert die Zellen in Richtung des Pfeils | | Shift+Ctrl+Pfeil| Markiert die Zellen in Richtungs des Pfeils bis Ende des Blocks| |Ctrl+Z| Letzter Schritt rückgängig machen| |Ctrl+Y| Letzer Schritt wiederholen (z.B. Formatierung)| |F1 | Hilfe| |F2 | Zeigt die Abhängikeiten einer Formel in der aktiven Zelle graphisch an| |F4 | Fixiert Zeile und Spalte, Zeile und Spalte bei erneutem Drücken | |F9 | Berechnet ein Arbeitsblatt neu (inkl. neuer Zufallszahl) | |Ctrl+PgDn/PgUp | Wechselt nach rechts/links durch die Arbeitsblätter | |Ctrl+-| Markierte Zeile/Spalte löschen| |Ctrl++| Zeile/Spalte einfügen| ==== KW 9 ==== === Ziele === * Daten (aus Instagram, Spotify, Discord, etc.) sind in Excel aufbereitet (inkl. Datum). * Grundlegende Funktionen von Excel sind klar. * Dokumentation ist ergänzt (wo nötig). === Aufträge === * [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/Excel_Intro.mp4?csf=1&web=1|Einführungsvideo Excel]] schauen. Stelle sicher, dass klar ist, wie * die oberste Zeile fixiert werden kann, * Zellbezüge funktionieren (z.B. =A1+A2), * Filter funktionieren, * Formeln eingegeben werden können, * Formeln kopiert werden können, * CSV, falls nicht korrekt angezeigt, in Excel "importiert" werden können ("Text in Spalten"). * Multiplikationstabelle aus Video nachbauen * Fülle ein Tabellenblatt mit zufälligem Inhalt zwischen A:F und 1:100 * Lösche einzelne, zufällige Zellen aus dem Zellenblock oben * Platziere die Maus / aktiviere eine Zelle im Block und probiere die Shortcuts ''CTRL-Pfeilab'' sowie ''CTRL-Pfeilauf'' und ''-link'' und ''-rechts'' aus. Was passiert? * Ergänze die Tastenkombination oben mit ''Shift'', d.h., nutze ''Shift-CTRL-Pfeilab'' etc. Was passiert? * Erstelle die gleiche Multiplikationstabelle von 1 bis 10, ausschliesslich mit der Tastastur, ohne die Maus zu verwenden. * Lies nach (oder befrage die KI) wie ein Datumsstring (wie er in deiner CSV-Datei vorliegt, im sog. *ISO*-Format) in ein Excel-Format umgewandelt werden kann, inkl. Zeit. Wandle dann das Datum aus deinen Daten in ein Datum (Spalte A) und Zeit (Spalte B) um. * **Dokumentation**: Unterscheid CSV und Excel-Datei ist notiert, Zellreferenzen und Filter sind erklärt, die wichtigsten Tastaturshortcuts sind ebenfalls angefügt. * Falls noch Zeit: "The Truman Show" recherchieren, der Film, welcher in "The Social Dilemma" referenziert wird. === Codes === import json import csv from pathlib import Path from datetime import datetime # --- CONFIGURATION --- BASE_PATH = 'C:/temp/discord/' OUTPUT_FILENAME = 'output_timestamps_clean.csv' def standardize_timestamp(ts_string): """Converts varying timestamp formats into a standard YYYY-MM-DD HH:MM:SS format.""" if not ts_string: return None # Format 1: "02.06.2021 06:26" try: dt = datetime.strptime(ts_string, "%d.%m.%Y %H:%M") return dt.strftime("%Y-%m-%d %H:%M:%S") except ValueError: pass # Format 2: "2021-02-17T20:35:29.083Z" (ISO 8601) try: dt = datetime.strptime(ts_string.replace("\"","")[:19].replace('T', ' '), "%Y-%m-%d %H:%M:%S") #dt = datetime.fromisoformat(ts_string[:17].replace('T', ' ')) return dt.strftime("%Y-%m-%d %H:%M:%S") except ValueError: pass # Fallback: return original string if it matches neither format return ts_string def process_file(file_path, writer): """Attempts to read a file as standard JSON, falls back to JSON Lines if needed.""" with open(file_path, 'r', encoding='utf-8') as f: try: # Attempt 1: Standard JSON data = json.load(f) records = data if isinstance(data, list) else [data] for entry in records: if isinstance(entry, dict): # Check both capitalization variants just in case raw_ts = entry.get('Timestamp') or entry.get('timestamp') if raw_ts: clean_ts = standardize_timestamp(raw_ts) writer.writerow([clean_ts, file_path.name]) return except json.JSONDecodeError: pass # Attempt 2: JSON Lines f.seek(0) for line in f: line = line.strip() if not line: continue try: entry = json.loads(line) records = entry if isinstance(entry, list) else [entry] for rec in records: if isinstance(rec, dict): raw_ts = rec.get('Timestamp') or rec.get('timestamp') if raw_ts: clean_ts = standardize_timestamp(raw_ts) writer.writerow([clean_ts, file_path.name]) except json.JSONDecodeError: pass def extract_and_format_timestamps(): work_dir = Path(BASE_PATH) output_path = work_dir / OUTPUT_FILENAME with open(output_path, 'w', newline='', encoding='utf-8') as csv_out: writer = csv.writer(csv_out) writer.writerow(['Timestamp', 'Filename']) print(f"Scanning: {work_dir}") print(f"Output will be saved to: {output_path}") for file_path in work_dir.glob('**/*.json'): if file_path.name == OUTPUT_FILENAME: continue try: process_file(file_path, writer) except Exception as e: print(f"Error reading file {file_path.name}: {e}") print("Done!") if __name__ == "__main__": extract_and_format_timestamps() ==== KW 8 ==== === Ziele === * Instagram-Daten (oder andere, wie Spotify, Discord, etc.) sind als CSV aufbereitet. * CSV-Datei kann geöffnet und interpretiert werden * Dokumentation ist angelegt. === Aufträge === * Den passenden Code in VisualStudio Code kopieren, den Pfad anpassen und dann ausführen. Im Anschluss, überprüfen, ob die CSV-Datei vorliegt und diese Inhalte hat. * CSV-Datei speichern und für nächstes Mal bereithalten. * Untersuche die CSV-Datei und halte fest, welche Informationen diese enthält. * **Dokumenation**: Erklären, was der Code macht, allenfalls unter Zuhilfenahme von KI. === Codes === Die untenstehende Codes dienen alle zur Aufbereitung der Daten in eine CSV-Datei. Bei allen Codes müssen die Pfade auf den eigenen Ordner angepasst werden, ebenso muss der Pfad zur CSV-Datei angepasst werden. Die Codes für Spotify und Discord sind weniger "didaktisch", das heisst, die sind komplizierter dafür professioneller geschrieben und weniger leicht zu verstehen. Wer möchte, kann sich entlang der Kommentare im Instagramm-Code vertiefen und gerne Fragen mit der Lehrperson besprechen. == Spotify == import json import csv from pathlib import Path # --- CONFIGURATION --- # Replace this with the path to your folder. # The script will read JSONs from here AND save the CSV. BASE_PATH = 'C:/temp/spotify/' # <-- Change this to your actual folder path OUTPUT_FILENAME = 'C:/temp/spotify_history.csv' DELIM = ';' # Delimiter for CSV, change if needed def spotify_json_to_csv(): # Create a Path object from the global variable work_dir = Path(BASE_PATH) output_path = OUTPUT_FILENAME # Open the CSV file for writing with open(output_path, 'w', newline='', encoding='utf-8') as csv_out: writer = csv.writer(csv_out, delimiter=DELIM) # Write the header row with the new column writer.writerow(['Timestamp', 'Song Title', 'Artist', 'ms_played']) print(f"Scanning: {work_dir}") print(f"Output will be saved to: {output_path}") # Walk through all JSON files in the directory for file_path in work_dir.glob('**/*.json'): # Skip the output file itself if it already exists to avoid errors if file_path.name == OUTPUT_FILENAME: continue try: with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) print( f"Processing: {file_path.name} with {len(data)} entries") if isinstance(data, list): for entry in data: timestamp = entry.get('ts') song = entry.get('master_metadata_track_name') artist = entry.get( 'master_metadata_album_artist_name') ms_played = entry.get('ms_played', 0) # Write row only if we have a valid song title if song: writer.writerow( [timestamp, song, artist, ms_played]) except json.JSONDecodeError: print(f"Warning: Could not decode {file_path.name}") except Exception as e: print(f"Error processing {file_path.name}: {e}") print("Done!") if __name__ == "__main__": spotify_json_to_csv() == Discord == import json import csv from pathlib import Path # --- CONFIGURATION --- # Replace this with the path to your folder. # The script will read JSONs from here AND save the CSV here. BASE_PATH = 'C:/temp/discord/' OUTPUT_FILENAME = 'C:/temp/output_timestamps.csv' DELIM = ';' # Delimiter for CSV, change if needed def json_to_csv(): # Create a Path object from the global variable work_dir = Path(BASE_PATH) output_path = OUTPUT_FILENAME # Open the CSV file for writing with open(output_path, 'w', newline='', encoding='utf-8') as csv_out: writer = csv.writer(csv_out,delimiter=DELIM) # Write the header row writer.writerow(['Timestamp', 'Filename']) print(f"Scanning: {work_dir}") print(f"Output will be saved to: {output_path}") # Walk through all JSON files for file_path in work_dir.glob('**/*.json'): try: with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) # Ensure the structure is a list if isinstance(data, list): for entry in data: timestamp = entry.get('Timestamp') # Write row only if timestamp exists if timestamp: writer.writerow([timestamp, file_path.name]) except json.JSONDecodeError: print(f"Warning: Could not decode {file_path.name}") except Exception as e: print(f"Error processing {file_path.name}: {e}") print("Done!") if __name__ == "__main__": json_to_csv() == Instagram == # -*- coding: utf-8 -*- import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind bei der Lehrperson erhältlich. Es ist nicht nötig, diesen Code zu verstehen, um die Aufgabe zu lösen. Es könnte aber interessant sein, sich damit zu beschäftigen. rootdir = 'C:/ordner/wo/alles/liegt/' pathtocsv = 'C:/order/wo/das/resultat/sein/soll/dateiname.csv' mnum = { "Januar": 1, "Februar": 2, "März": 3, "April": 4, "Mai": 5, "Juni": 6, "Juli": 7, "August": 8, "September": 9, "Oktober": 10, "November": 11, "Dezember": 12 } # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle HTML-Dateien im Verzeichnis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r", encoding="utf8") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form Apr. 08, 2021 8:54 am einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall( "([A-Z][a-zä]+) (\d{1,2}), (\d{4}) (\d{1,2}):(\d{1,2}) ([ap]m)", html) if (debug > 0): print(file, ": ", len(daten)) debug -= 1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [mnum[d[0]]] + [int(x) for x in d[1:-1]] # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0) if d[5] == "pm": e[3] = (e[3]+12) % 24 if debug > 0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[0], e[1], e[3], e[4], 0) if debug > 0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. # Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. csv += datum.strftime("%Y-%m-%d %H:%M:%S;" + os.path.splitext(file)[0]+"\n") # Ausgabe in Datei schreiben f = open(pathtocsv, "w") f.write(csv) f.close() import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind bei der Lehrperson erhältlich. Es ist nicht nötig, diesen Code zu verstehen, um die Aufgabe zu lösen. Es könnte aber interessant sein, sich damit zu beschäftigen. rootdir = 'C:/ordner/wo/alles/liegt/' pathtocsv = 'C:/order/wo/das/resultat/sein/soll/dateiname.csv' mnum = {"Jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6, "Jul": 7, "Aug": 8, "Sep": 9, "Oct": 10, "Nov": 11, "Dec": 12} # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle HTML-Dateien im Verzeichnis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r", encoding="utf8") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form Apr. 08, 2021 8:54 am einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall( "([A-Z][a-z][a-z])\.? (\d{1,2}), (\d{4}) (\d{1,2}):(\d{1,2}) ([ap]m)", html) if (debug > 0): print(file, ": ", len(daten)) debug -= 1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [mnum[d[0]]] + [int(x) for x in d[1:-1]] # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0) if d[5] == "pm": e[3] = (e[3]+12) % 24 if debug > 0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[0], e[1], e[3], e[4], 0) if debug > 0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. # Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. csv += datum.strftime("%Y-%m-%d %H:%M:%S;" + os.path.splitext(file)[0]+"\n") # Ausgabe in Datei schreiben f = open(pathtocsv, "w") f.write(csv) f.close() ==== KW 7==== === Ziele === * Instagram-Daten sind heruntergeladen und in einen Ordner extrahiert (entpackt). * Python-Testprogramm läuft bei allen. * Dokumentation ist angelegt. === Aufträge === * **Python-Check-Up:** * Das Programm unten auf den gewählten Ordner anpassen, laufen lassen und die Gesamtdateigrösse in Forms kopieren. * Dateigrösse in Bytes in Forms notieren (siehe unten). * **Instagramm-Daten:** * Jede/r lädt die Instagram-Daten (als HTML) herunter. * Ordner erstellen und ZIP-Datei darin entpacken. * Ein Datum (z.B. ''Apr 20, 2023 10:13 am'') aus den Instagram-Daten (z.B. aus den Likes) lesen und auf [[https://forms.cloud.microsoft/e/i5ATAh9inY|Forms]] posten (mit anderen Informationen oben) * **Datei-Endungen einblenden:** Oft ist es einfach, wenn man von Dateien die Erweiterung kennt. Blende diese ein, siehe z.B. [[https://www.heise.de/tipps-tricks/Windows-Dateiendungen-anzeigen-lassen-4000129.html|diese Anleitung]] * **Dokumentation**: Füge den Begriff CSV an: Lege dazu eine Datei in Excel an, speichere diese als CSV und betrachte sie nachher mit einem Texteditor, d.h., rechts klicken und öffnen. Editiere die Datei und öffne sie erneut in Excel. Erkläre in eigenen Worten was eine CSV-Datei ist. Geht das auch mit einer Datei, welche du als Excel-Datei (Erweiterung XLSX) speichert? import os # --- Programm um alle Dateien zu durchlaufen--- # Pfad anpassen folder_to_check = 'C:/ordner/wo/alles/liegt/' #Achtung: Forward slashes oder ein r vor dem String def get_directory_size(start_path): total_size = 0 # os.walk() generates the file names in a directory tree # It yields a 3-tuple (dirpath, dirnames, filenames) for dirpath, dirnames, filenames in os.walk(start_path): for f in filenames: # Join the directory path and file name to get the full path fp = os.path.join(dirpath, f) print(fp) # Skip if it is a symbolic link (optional, but good practice) if not os.path.islink(fp): total_size += os.path.getsize(fp) return total_size print(f"Berechne Grösse für: {os.path.abspath(folder_to_check)}") size_in_bytes = get_directory_size(folder_to_check) # Convert to Megabytes for easier reading size_in_mb = size_in_bytes / (1024 * 1024) print(f"Gesamtgrösse: {size_in_bytes} bytes") print(f"Gesamtgrösse: {size_in_mb:.2f} MB") ==== Dokumentation ==== ^ Begriff ^ Eintrag ^ | CSV | Dokumentiere, was CSV [ist], wie es angezeigt und bearbeitet werden kann. Erstelle eine CSV-Datei mit Notepad und betrachte sie in Excel. | | Code erklären (KW 8) | Erklären, was der Code macht, allenfalls unter Zuhilfenahme von KI. | | CSV vs. Excel & Basics (KW 9) | Unterschied CSV und Excel-Datei ist notiert, Zellreferenzen und Filter sind erklärt, die wichtigsten Tastaturshortcuts sind ebenfalls angefügt. | | Pivottabellen & Funktionen (KW 10) | Was sind Pivottabellen? Wie funktioniert die Funktion "WOCHENTAG"? Welches sind nützliche Short-cuts in Excel? | | Zellformatierung (KW 11) | Verschiedene Zellformatierungen sind erklärt. Welche Datentypen können wie formatiert werden. | | Word, PDF & Grafikformate (KW 12) | Unterschied Word und PDF. Welche Grafikformate sollen wann verwendet werden? Wieso? |