Seite 1 von 1

Verschieben von PDF-Dokumenten in Ordner

Verfasst: Donnerstag 25. Juni 2020, 14:50
von FGKey
Hallo Zusammen,
Ich bin Anfänger im Umgang mit Python und wollte auf diese Weise eine Frage ins Forum platzieren. Ich hoffe ihr könnt mir bei meinem Problem helfen.
Mein Problem lautet folgendermassen:
Ich muss ein Dokument in einen Ordner verschieben. Das Problem ist jedoch, dass das Dokument im Namen gewisse Merkmale hat, welche auf die Ordner hinweist, in welche das Dokument verschoben werden muss.
Beispiel:
Dokument: 123_Beleg_Jahr2020 (Nummer_Name_Jahr)
Ordner: 123
Unterordner: Jahr2020
Unterunterordner: Beleg

Hat es einen Befehl / Code, welcher Folgendes lösen könnte?
«Verschiebe das Dokument 123_Beleg_Jahr2020 in den Unterunterordner, welcher im Ordner mit der gleichen Nummer wie das Dokument und im Unterordner mit dem gleichen Jahr wie das Dokument ist.
Da ich viele einzelne Dokumente habe, bräuchte ich einen Allgemeinen Code und keinen, welcher diese spezifische Nummer enthält.

Vielen Dank für eure Hilfe!!

Gruss

Re: Verschieben von PDF-Dokumenten in Ordner

Verfasst: Freitag 26. Juni 2020, 05:55
von sparrow
Natürlich geht das.

Im ersten Schritt musst du dir aus dem Dateinamen die nötigen Informationen suchen.
Anschließend musst du schauen, ob die entsprechende Ordnerstruktur schon da ist, diese ggf. anlegen und die Datei verschienben.

Woran scheiterst du denn?

Re: Verschieben von PDF-Dokumenten in Ordner

Verfasst: Freitag 26. Juni 2020, 06:30
von Sirius3
Es gibt keinen Befehl, der genau das macht, was Du willst. Das musst Du selbst programmieren. Schau dir dazu in der Dokumentation DAAD Modul pathlib an. Du brauchst Path.stem, str.split, Path.mkdir und Path.rename.

Re: Verschieben von PDF-Dokumenten in Ordner

Verfasst: Freitag 26. Juni 2020, 07:19
von FGKey
@sparrow
Vielen Dank für deine Antwort. Ich habe es mit «import os» usw. versucht und konnte die Ordner problemlos verschieben. Dabei musste jedoch den genauen Namen angeben, wie im obigen Beispiel 123_. Da ich jedoch sehr viele solche unterschiedlichen Dokumente habe, wäre es sinnvoll einen Befehl zu haben, welcher dazu da ist, den gleichen Namen mit dem gleichen Ordner zu verbinden und nicht eine konkrete Zahl mit dem spezifischen Ordner. Ich entschuldige mich für die ungenauen Angaben, da ich es selber noch nicht besser verstehe. :D

@Sirius3

Danke für deinen Input. Ich werde mich informieren und die Dokumentation anschauen. Ich hoffe, dass ich dort was finden.
Gruss

Re: Verschieben von PDF-Dokumenten in Ordner

Verfasst: Freitag 26. Juni 2020, 07:34
von DeaD_EyE

Code: Alles auswählen

from pathlib import Path


file = Path("123_Beleg_Jahr2020.xlsx")

print(file.stem)
print(file.stem.split("_"))

lfdn, beleg, jahr = file.stem.split("_")
lfdn = int(lfdn) # nun ist 123  ein int
# muss aber nicht umgewandelt werden, wenn man nicht danach sortieren will


# jahr muss aus dem string entfernt werden
print(jahr)

jahr = jahr.lower().replace("jahr", "")
print(jahr) # jahr ist immer noch ein str
# wenn nur der Ordner 2020 angelegt werden soll, braucht man ihn auch nicht umzuwandeln
Um Dateien in einem Pfad zu finden, gibt es bei dem Path objekt die Methode glob und rglob.

Code: Alles auswählen

for file in Path("verzeichnis").glob("*.xlsx"):
    print(file)
Hier ein paar weitere Erklärungen zur pathlib: https://realpython.com/python-pathlib/
Paar wichtige Attribute und Methoden: name, stem, suffix, rename, unlink, mkdir, touch, absolute, glob, rglob

Ein fallstrick ist Path.replace. Das kann nur funktionieren, wenn es sich auf dem gleichen Dateisystem befindet.
Wenn du z.B. mit zwei unterschiedlichen Partitionen arbeitest und die Datei "verschieben" willst, muss die Datei kopiert werden und dann vom alten Pfad gelöscht werden.
Da hilft das Modul shutil weiter. Die Funktionen shutil.copy und shutil.move sollten mittlerweile auch mit Path objekten umgehen können.
Falls mal irgendeine Funktion die Zusammenarbeit mit Path objekten verweigert, kann man es immer noch in einen str umwandeln.
Ich hoffe, dass war jetzt nicht zuviel aufeinmal.

Re: Verschieben von PDF-Dokumenten in Ordner

Verfasst: Freitag 26. Juni 2020, 07:40
von FGKey
@DeaD_EyE

Wow, vielen Dank für die ausführliche Antwort!! Ich schaue es jetzt in Ruhe an und versuche es zu verstehen. Danke auf jeden Fall für die Antwort und ich würde mich wieder ans Forum wenden, wenn ich noch Hilfe brauche :D

Gruss