Dateinamen suchen und umbenennen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Erichmo
User
Beiträge: 13
Registriert: Donnerstag 1. August 2019, 16:28

Hallo zusammen,

ich möchte gerne Excel Dateien in einem Verzeichnis einheitlich umbenennen.

Die Dateinamen sind z.B. "4523_herbert_G_01" , "4523_herert_G_05" , ....

Als Variable gebe ich den Dateipfad vor und gebe die Infos "4523" sowie "G_01" als Input.

Ziel soll es sein das "herbert" aus dem Dateinamen zu entfernen. Wobei anstelle von herbert auch irgendetwas beliebig anderes stehen könnte.

Zusätzlich sollen die Dateien von 4523_G_01 bis 4523_G_26 erstellt werden, falls sie noch nicht vorhanden sind. Dafür sollte die Datei G_01 kopiert und umbenannt werden.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Zu meinem Problem: Ich verzweifle daran, den mittleren Teil des Strings zu entfernen und nur die beiden äußeren Teile des Dateinamens stehen zu lassen.

Ich habe mir über os.listdir(pfad) alle Dateinamen auflisten lassen und suchen nun die Funktion mit welcher ich die beliebigen Zeichen in der Mitte des Strings (im Beispiel "herbert") gezielt entfernen kann.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Vielen Dank vorab für die Hilfe!


Beste Grüße

Erichmo
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

name = '4523_herbert_G_01'
parts = name.split('_')                   
print('_'.join(parts[:1] + parts[2:]))            
Erichmo
User
Beiträge: 13
Registriert: Donnerstag 1. August 2019, 16:28

__deets__ hat geschrieben: Mittwoch 10. Mai 2023, 14:29

Code: Alles auswählen

name = '4523_herbert_G_01'
parts = name.split('_')                   
print('_'.join(parts[:1] + parts[2:]))            

Hallo deets,

vielen Dank für deine schnelle Antwort.

Kann ich die Funktion auch direkt auf alle Listenobjekte anwenden?

Beispiel Code:

Code: Alles auswählen


import os

path = "C:\Users\meier.erik\Desktop\Test"

files = os.listdir(path)

for file in files:


__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Indem du das ganze in eine Funktion packst, und die für jeden Namen aufrufst zb.
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Randbemerkung: Für neuen Code würde man besser `pathlib` verwenden, statt `os.listdir()` & Co.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten