Type Error bei Verwendung mehrer Menüs

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Komplett großgeschrieben Variablennamen sind nach Konvention Konstanten. OBJECT ist auch ein bescheidener Name, da alles ein Objekt ist. OBJEKT ist schon ein Path-Objekt, das nochmal in eins zu konvertieren, ist unsinnig.

Code: Alles auswählen

for filepath in Path.iterdir(TEMP_PATH):
    if filepath.name.startswith(TEMP_NAMES):
        print(filepath)
Zuletzt geändert von Sirius3 am Freitag 21. Juni 2019, 13:45, insgesamt 1-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@TheBombTuber: `OBJECT` und `FILENAME` sollten nicht gross geschrieben werden, das sind ja keine Konstanten. `OBJECT` ist auch ein bisschen *sehr* generisch, denn in Python ist *alles* ein Objekt das man an einen Namen binden kann. Zudem ist `object` klein geschrieben schon der Name des eingebauten Grunddatentyps `object`.

Es macht auch nicht wirklich Sinn `Path` mit `OBJECT` aufzurufen, denn `OBJECT` ist ja bereits ein `Path`-Objekt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Schoen das es klappt. Aber es gibt eine Menge zu meckern:

- GROSSBUCHSTABENSINDNURFUERKONSTANTENAUFMODULEBENEUNDNICHTFUERVARIABLEN. Also nicht OBJECT, nicht FILENAME. Sondern wenn object und filename (aber siehe gleich).
- object ist (auch kleingeschrieben) ein ganz doofer Name. Was ist denn bitte kein Objekt? Warum nicht einfach temp_file?
- Path(OBJECT).name ist cargo-cult. Das Ergebnis von iterdir sind schon Path-Objekte.
- .name nochmal an eine eigene Variable zuzuweisen ist ein bisschen ueberfluessig.
TheBombTuber
User
Beiträge: 46
Registriert: Samstag 9. September 2017, 15:48

Danke an alle für die Hinweise.

Ich muss mich noch daran gewöhnen die Namenskonventionen genauer einzuhalten, aber ich versuche mein bestes.

Schlussendlich habe ich folgendes Ergebnis:

Code: Alles auswählen

for temp_files in Path.iterdir(TEMP_PATH):
    if (temp_files.name).startswith(TEMP_NAMES):
        print(temp_files, "wird entfernt")
        shutil.rmtree(TEMP_PATH,temp_files)
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@TheBombTuber: `Path.iterdir()` auf der Klasse aufzurufen ist komisch/falsch.

Die Klammern um `temp_files.name` sind überflüssig.

Der `shutil.rmtree()`-Aufruf bekommt falsche Argumente.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
TheBombTuber
User
Beiträge: 46
Registriert: Samstag 9. September 2017, 15:48

__blackjack__ hat geschrieben: Montag 24. Juni 2019, 07:15 @TheBombTuber: `Path.iterdir()` auf der Klasse aufzurufen ist komisch/falsch.

Die Klammern um `temp_files.name` sind überflüssig.

Der `shutil.rmtree()`-Aufruf bekommt falsche Argumente.
@blackjack: Wann sollte ich denn 'Path.iterdir()' aufrufen? Oder was ist an der jetzigen Methode falsch?

Ist entfernt.

Stimmt ist mir nicht aufgefallen, dass ich `shutil.rmtree()` den Pfad jetzt zweimal übergebe, da hab ich nicht aufgepasst.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Code: Alles auswählen

for filepath in TEMP_PATH.iterdir():
    if filepath.name.startswith(TEMP_NAMES):
        print(filepath , "wird entfernt")
        shutil.rmtree(filepath)
TheBombTuber
User
Beiträge: 46
Registriert: Samstag 9. September 2017, 15:48

Sirius3 hat geschrieben: Montag 24. Juni 2019, 07:44

Code: Alles auswählen

for filepath in TEMP_PATH.iterdir():
    if filepath.name.startswith(TEMP_NAMES):
        print(filepath , "wird entfernt")
        shutil.rmtree(filepath)
@Sirius3: Danke. Ist angepasst und gemerkt :D
Antworten