Seite 1 von 1

Verschieben von PDF

Verfasst: Freitag 1. April 2022, 20:36
von Bebbi
Hallo zusammen

Für das Verschieben von einigen PDF habe ich mir folgenden Code zusammengebastelt:

Code: Alles auswählen

import re
from pathlib import Path
import shutil

BASEPATH = Path("P:\Kito Hauptordner\Kito\Key Link\KeyLink_Belege\Python")
SOURCE_PATH = BASEPATH / "Verteilordner"
DESTINATION_PATH = Path("N:\BK\XX-00263101\Jahr 2022\2. Auszüge")
FILTERS = [
    ("2. Auszüge", "Belastungsanzeige"), 
    ("2. Auszüge", "Übersicht") 
]

def main():
    for name, customer_number in FILTERS:
        destination = DESTINATION_PATH / name
        for sourcefile in SOURCE_PATH.glob(f"*{customer_number}*.pdf"):
            sourcefile.rename(destination / sourcefile.name)

if __name__ == "__main__":
   main()
Leider kommt er mir bei der Zeile

Code: Alles auswählen

 DESTINATION_PATH = Path("N:\BK\XX-00263101\Jahr 2022\2. Auszüge") 
mit folgender Meldung:

(unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape

Hat jemand eine Ahnung woran das liegt und was ich genau ändern/anpassen muss?

Danke

Re: Verschieben von PDF

Verfasst: Freitag 1. April 2022, 21:43
von sparrow
Du kannst nicht einfach "\" in Zeichenketten verwenden. Das leitet Escape-Sequencen ein. So bedeutet \n einen Zeilenumbruch und \t ienen Tabulator. Wie soll man sonst wissen, was genau du meinst?
Entweder musst du sie maskieren oder einen raw-String mit vorgestellten r verwenden.

Das ist in diesem Fall aber überflüssig. Verwende "/" statt "\" als Pfadtrenner in Zeichenketten. Python kann damit umgehen.

Code: Alles auswählen

DESTINATION_PATH = Path("N:/BK/XX-00263101/Jahr 2022/2. Auszüge")
Und dann schauen, ob es geht.

Re: Verschieben von PDF

Verfasst: Freitag 1. April 2022, 22:10
von nezzcarth
@sparrow: Selbst in raw Strings ist \ ein kleines bisschen speziell (s. letzter Absatz des Abschnitts), weshalb manchmal empfohlen wird, sie nicht dafür zu verwenden. Rawstrings können auch nicht auf \ enden.

Re: Verschieben von PDF

Verfasst: Freitag 22. April 2022, 13:31
von Bebbi
Sorry ich war leider längere Zeit weg, deshalb die späte Rückmeldung.

Mit dem Umstellen von \ auf / klappt es. Was mich aber noch interessieren würde, weshalb akzeptiert er beim BASEPATH: das \, beim DESTINATION_PATH aber nicht? Ergibt das einen Sinn?

Zudem teilt er mir jetzt mit, dass er die Datei nicht auf ein anderes Laufwerk verschieben darf. Weshalb soll denn das nicht möglich sein?

Besten Dank

Re: Verschieben von PDF

Verfasst: Freitag 22. April 2022, 13:41
von __deets__
Es sind eben nicht fuer alle \<buchstabe> besondere Funktionen hinterlegt. Je nach konkretem Pfad passiert also nichts, oder eben doch etwas. \n ist ein "newline", \t ein "tab", wenn du also einen Pfad c:\neue\tafel hast, dann sind das zwei andere Zeichen. Hast du aber c:\alter\kaffee, dann gibt's dafuer keine Ersetzung, und der Pfad ist ok.

Zu deiner Fehlermeldung kann ich nichts sagen.

Re: Verschieben von PDF

Verfasst: Freitag 22. April 2022, 13:43
von __blackjack__
@Bebbi: Das sagt Dir doch die Ausnahme recht deutlich warum das nicht geht. Wobei die nicht zum gezeigten Code passt, denn da gibt es das Problem gar nicht:

Code: Alles auswählen

In [71]: from pathlib import Path                                               

In [72]: DESTINATION_PATH = Path("N:\BK\XX-00263101\Jahr 2022\2. Auszüge")

In [73]: