Seite 1 von 1

pathlib mkdir und replace

Verfasst: Freitag 23. Juli 2021, 10:28
von Ernie1412
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 ?

Re: pathlib mkdir und replace

Verfasst: Freitag 23. Juli 2021, 10:52
von narpfel
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.

Re: pathlib mkdir und replace

Verfasst: Freitag 23. Juli 2021, 13:44
von Ernie1412
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 !