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
Verschieben von PDF-Dokumenten in Ordner
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?
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?
@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.
@Sirius3
Danke für deinen Input. Ich werde mich informieren und die Dokumentation anschauen. Ich hoffe, dass ich dort was finden.
Gruss
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.
@Sirius3
Danke für deinen Input. Ich werde mich informieren und die Dokumentation anschauen. Ich hoffe, dass ich dort was finden.
Gruss
- DeaD_EyE
- User
- Beiträge: 1038
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
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
Code: Alles auswählen
for file in Path("verzeichnis").glob("*.xlsx"):
print(file)
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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
@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
Gruss
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
Gruss