Hallo zusammen
Ich habe bereits einige kleinere Dateien zum umbenennen von PDF Dateien erstellt und diese funktionieren auch. Bisher musste das Programm allerdings immer nur einen Namen finden und diesen umschreiben. Ich habe dafür folgenden Befehl verwendet:
"for filename in BESTELL_PATH.glob("*_Buchung_*.pdf"):
date, name, num, can1, can2 = filename.stem.split('_')
name = name.replace('Buchung', 'Buchungsbestätigung')"
Jetzt stehe ich aber vor dem - für mich leider nicht lösbaren Problem - dass der gesuchte Teil des Dateinamen nicht aus einem Wort besteht sondern aus mehreren Worten ohne Verbindungszeichen. Hier ein Beispiel:
"for filename in BESTELL_PATH.glob("*_Buchung aus Deutschland_*.pdf"):
date, name, num, can1, can2 = filename.stem.split('_')
name = name.replace('Buchung aus Deutschland', 'Buchungsbestätigung Deutschland')"
Mit der obigen Synthax kann mir das Programm die Umschreibung leider nicht vornehmen. Ich habe bereits diverses probiert wie die Lücken mit & zu verknüpfen oder mit '," etc. zu arbeiten. Leider war alles erfolglos.
Weiss jemand Rat?
Besten Dank
Umbenennen von PDFs
Kannst du dein Problem bitte ohne Code erklären?
Also was genau willst du tun? Welche Lücke willst du Verknüpfen? Geht es um Leerzeichen? Die sind normaler bestandteil einer Zeichenkette:
Edit:
Oder geht es um das Finden der Datei und nicht das Ersetzen?
Dann heißt deine Datei anders, denn das geht problemlos:
Also was genau willst du tun? Welche Lücke willst du Verknüpfen? Geht es um Leerzeichen? Die sind normaler bestandteil einer Zeichenkette:
Code: Alles auswählen
>>> a = "Dies ist eine Buchung aus Deutschland"
>>> b = a.replace("Buchung aus Deutschland", "Buchungsbestätigung Deutschland")
>>> b
'Dies ist eine Buchungsbestätigung Deutschland'
Oder geht es um das Finden der Datei und nicht das Ersetzen?
Dann heißt deine Datei anders, denn das geht problemlos:
Code: Alles auswählen
>>> from pathlib import Path
>>> path = Path("d:")
>>> for f in path.glob("*t Leerzeichen*.txt"):
print(f)
d:Datei mit Leerzeichen.txt
Die Dateinamen waren bis anhin jeweils ohne Leerzeichen (z.B. Client_Statement). In diesem Fall war es mir jeweils möglich, den bestehenden Namen durch einen neuen zu ersetzen. Z.B. Client_Statement => Kundenauszug. Jetzt habe ich ein Dateiname, welcher über Leerzeichen verfügt z.B. Client Statement as of January. Mein bestehender Code, oben ersichtlich, findet jetzt aber den zu ersetzenden Namen nicht, wenn es sich dabei um Client Statement as of January handelt oder auch nur einen Textteil davon. Bei allen anderen Dateinamen, welche über keine Leerschläge verfügen läuft das Ersetzen des Namens allerdings problemlos. Zuerst muss der Code also die Datei(en) mit der Bezeichung Client Statement as of January finden und danach den bestehenden Namen, z.B. durch Kundenauszug Januar ersetzen.
Ich hoffe das ist irgendwie verständlich...
Ich hoffe das ist irgendwie verständlich...
Nein, das Problem wird nicht klar, weil wie schon sparrow gezeigt hat, sind Leerzeichen an sich kein Problem.
Also wie sieht Dein Code wirklich aus, wie sehen die Dateinamen aus, und was funktioniert dann konkret nicht?
Dabei bitte Code in Code-Tags setzen und nicht in Anführungszeichen, denn das ist kein gültiges Python.
Also, wird bei Deinem Beispiel `filename` korrekt ausgegeben? Wird `name` korrekt ausgegeben? Wo ist das konkrete Problem?
Also wie sieht Dein Code wirklich aus, wie sehen die Dateinamen aus, und was funktioniert dann konkret nicht?
Dabei bitte Code in Code-Tags setzen und nicht in Anführungszeichen, denn das ist kein gültiges Python.
Code: Alles auswählen
for filename in BESTELL_PATH.glob("*_Buchung aus Deutschland_*.pdf"):
print(filename)
date, name, num, can1, can2 = filename.stem.split('_')
name = name.replace('Buchung aus Deutschland', 'Buchungsbestätigung Deutschland')
print(name)
Hallo Bebbi,
wenn Du erst die Leerzeichen durch Untersriche ersetzen willst:
Gruss Peter
wenn Du erst die Leerzeichen durch Untersriche ersetzen willst:
Code: Alles auswählen
from pathlib import Path
verzeichnis = Path('/daten')
for file in Path.glob(verzeichnis, '*.txt'):
print(file)
leerzeichen = ' '
if leerzeichen in str(file):
print("leerzeichen gefunden")
neuer_name = str(file).replace(' ', '_')
print(neuer_name)
Ausgabe:
/daten/Link HP Produkte.txt
leerzeichen gefunden
/daten/Link_HP_Produkte.txt