pathlib mkdir und replace

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.
Antworten
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

wie kriege ich ein verständnis dazu was pathlip macht ?

ich hab folgendes:

Code: Alles auswählen

         alt=self.tblFiles.item(zeile,0).text()
            neu=PureWindowsPath(file[:-4]).joinpath(file)
            self.txtBrwStatus.append("Alt: <b>"+str(alt)+"</b>\n")
            self.txtBrwStatus.append("Neu: <b>"+str(neu)+"</b>\n")
            Ordner=PureWindowsPath(dirname).joinpath(file[:-4])
            Ordner.mkdir(parents=True, exist_ok=True)
            Path(dirname).replace(alt, neu)
1. Path.mkdir(mode=0o777, parents=False, exist_ok=False)¶
geb ich für "Path" den Ordnername als string an ?
2. Path.replace(target)
alt und neu sind ohne Ordner oder ?
den ordner gibt man mit Path(Ordner) an oder ?

in einem Ordner E:\\Movies\ liegen mp4 dateien
diese möchte ich jeweils in einem Extra Ordner schieben
also E:\\Movies\movie_yxz.mp4
soll zu E:\\Movies\movie_yxz\movie_yxz.mp4 werden

mit "os" kriege ich das leicht hin, wie geht das mit pathlib ?
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

Ungetestet:

Code: Alles auswählen

movie = Path(...).absolute()
directory = movie.parent / movie.stem
directory.mkdir(exist_ok=True)
movie.rename(directory / movie.name)
Verständnis für `pathlib` bekommst du wahrscheinlich am besten, indem du aufhörst, Pfade wie Strings zu behandeln. Heißt: Keine Stringoperationen, Eingabedaten so früh wie möglich in `Path`-Objekte umwandeln und nur zur Ausgabe wieder zurück zu Strings gehen.

Beispiel `Path.mkdir`: Das ist eine Methode auf einem `Path`-Objekt, also muss (wie bei jedem Methodenaufruf) ein Objekt der Klasse `Path` vor dem Punkt stehen, kein String.

Vielleicht ist auch der dazugehörige PEP einen Blick wert.
Ernie1412
User
Beiträge: 160
Registriert: Freitag 10. Januar 2020, 20:38

so langsam versteh ich wie es geht :)
dank dir

Code: Alles auswählen

            neu.mkdir(exist_ok=True)
            alt.replace(neu / file.name)
so ist es richtig !
Antworten