Seite 1 von 1
python Aufgabe
Verfasst: Donnerstag 11. März 2021, 18:16
von Majd Kai
hey Leute ,
kann mir bitte jemand helfen?
hab diese Aufgabe,
schreibe ein Python-Programm.
Das Programm soll den Inhalt eines Verzeichnisses ausgeben und nachschauen, ob eine oder mehrere ZIP-Dateien enthalten sind.
1. Abfrage, welcher Pfad
2. Hineingehen in das Verzeichnis
3. Verzeichnis in eine Variable vom Typ Liste übergeben
4. Liste sortieren
5. Prüfen, ob eine oder mehrere ZIP-Daten vorhanden sind
Re: python Aufgabe
Verfasst: Donnerstag 11. März 2021, 18:44
von __deets__
Dank deinen Bemühungen, dein Problem an wirklich jeden noch so irrelevanten existierenden Thread zu hängen, habe ich hier gerade 5 Minuten administrieren müssen. Schlimmer als jeder Spammer. Krieg dich mal ein, nochmal so eine Nummer, und du fliegst.
Zu deinem Problem:
viewtopic.php?t=1689
Wir sind hier nicht die Hausaufgabenablieferstelle für von akuter Faulheit befallene Schüler, Azubis oder Studenten. Diese Aufgabe ist wohl kaum vom Himmel gefallen. Was also hast du gelernt, was probiert? Und irgendwelche “der Lehrer erklärt nichts” Sprüche sind Unglaubwürdig....
Re: python Aufgabe
Verfasst: Donnerstag 11. März 2021, 23:50
von __blackjack__
@Majd Kai: Das wirft Fragen auf:
Wie und wo soll denn der Pfad abgefragt werden?
Was soll 2. bedeuten?
Soll das Verzeichnis bzw. der Verzeichnisname als einziges Element in eine Liste gesteckt werden? Oder ist da vielleicht etwas anderes gemeint? Etwas wo 4. dann auch Sinn machen würde.
Nach welchen Kriterien soll denn sortiert werden?
Fehlt in der Liste nicht noch die Ausgabe? An welcher Stelle soll die passieren?
Was soll mit dem Ergebnis der Prüfung von 5. passieren?
Re: python Aufgabe
Verfasst: Freitag 12. März 2021, 06:49
von Sirius3
1. dafür gibt es `input`
2. die Eingabe in einen pathlib.Path konvertieren.
3. den Inhalt bekommst Du per .iterdir()
4. da gibt es was in list.
5. da musst Du jedes Element der Liste durchgehen und das Suffix prüfen.
Wein Du nur eine Liste mit zip-Dateien willst, benutzt Du in Schritt 3 statt iterdir glob.
Re: python Aufgabe
Verfasst: Dienstag 16. März 2021, 14:51
von __blackjack__
Code: Alles auswählen
#!/usr/bin/env python3
import re
import tkinter as tk
from pathlib import Path
from tkinter.filedialog import askdirectory
from zipfile import is_zipfile
from rich.columns import Columns
from rich.console import Console
from rich.text import Text
from rich.theme import Theme
def needs_escaping(filename):
return bool(re.search(r"""['"\\\udc00-\udcff]""", filename))
def convert_path_to_filename_text(path):
if path.is_dir():
style = "directory"
elif is_zipfile(path):
style = "zip-file"
else:
style = "none"
return Text(
ascii(path.name) if needs_escaping(path.name) else path.name,
style=style,
)
def main():
console = Console(
theme=Theme({"directory": "bright_blue", "zip-file": "bright_red"}),
highlight=False,
)
tk.Tk().withdraw()
directory_name = askdirectory(mustexist=True)
if directory_name:
paths = sorted(
Path(directory_name).iterdir(), key=lambda path: path.name.lower()
)
console.print(
Columns(
map(convert_path_to_filename_text, paths),
padding=(0, 3),
column_first=True,
title=Text(directory_name),
)
)
console.line()
console.print(
"Es gibt {}[/] ZIP-Dateie(n) im gewählten Verzeichnis.".format(
"[green]eine oder mehrere"
if any(map(is_zipfile, paths))
else "[red]keine"
)
)
if __name__ == "__main__":
main()