Prüfen, ob Dateien in einem Directory eine Dateiendung haben

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
Python123.py
User
Beiträge: 12
Registriert: Freitag 20. Dezember 2019, 12:39

Hallo,

ich würde gerne über Python überprüfen, ob eine Datei eine Dateiendung hat.
Wenn die Datei keine Dateiendung hat, soll diese automatisch umbenannt werden.

Wie kann ich überprüfen, welche Dateien in einer Directory keine Endung haben?
Wie würde die If-Bedingung aussehen?


Ich freue mich auf eine Antwort und wünsche viele Grüße
Benutzeravatar
YAPD
User
Beiträge: 120
Registriert: Dienstag 27. Juli 2021, 23:23
Wohnort: Frankfurt am Main

Hey Python :),

also grundsätzlich die Dateien aus dem Verzeichnis auslesen und dann
mit einer if Bedingung prüfen, ob ein Punkt existiert. Du kannst auch den
letzten Punkt und damit die Dateiendung auslesen ( rsplit ).

Code: Alles auswählen

Files = [ "Testumgebung.py" , "OS.py" , "Module.py" ]

for x in Files :
    print( x )
    if "." in x :
        print( "Datei - Endung Gefunden !" )
    else :
        print( "Keine Datei - Endung !" )
Je nachdem ob du mehrere Punkte im Dateinamen hast, müsstest du sie
halt abzählen.

VG
YAPD
Zuletzt geändert von YAPD am Montag 2. August 2021, 11:09, insgesamt 2-mal geändert.
-----
Yet Another Python Developer
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Python123,

Dafür würde ich die pathlib verwenden.
Über "suffix" spricht man die Dateiendung an.
https://docs.python.org/3/library/pathl ... ath.suffix

Code: Alles auswählen

import pathlib

folder_name = "C:/test"
new_extension = ".txt"
folder = pathlib.Path(folder_name)

# alle Unterverzeichnisse und darin enthaltene Dateien durchsuchen
for element in folder.glob("**/*"):
    if element.is_file() and not element.suffix:
    
        # replace zum automatischen umbenennen
        element.replace(element.with_suffix(new_extension))
Zuletzt geändert von rogerb am Montag 2. August 2021, 11:12, insgesamt 1-mal geändert.
Python123.py
User
Beiträge: 12
Registriert: Freitag 20. Dezember 2019, 12:39

Hallo an alle,
vielen Dank für euere Antworten.

Ich werde das später alles in Ruhe ausprobieren
Benutzeravatar
YAPD
User
Beiträge: 120
Registriert: Dienstag 27. Juli 2021, 23:23
Wohnort: Frankfurt am Main

Hallo Zusammen,

sorry vielmals, dass die Dateiendung ersetzt werden soll, habe ich überlesen :)
Das Einlesen der Verzeichnisse hab ich mit einer List simuliert, das war ja aber
auch nicht die Frage :)

VG
YAPD
-----
Yet Another Python Developer
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@YAPD: Dateien sind keine einfachen Strings, mit rsplit sollte man also nicht damit herumhantieren.

@Python123.py: Wie in Deinem andern Beitrag schon geschrieben, gibt es zum Arbeiten mit Dateien `pathlib.Path`. Diese kennen .suffix um zu prüfen, ob eine Datei eine Endung hat, und .with_suffix um einen Pfad mit Suffix zu erzeugen.

EDIT: rogerb hat Dir ja jetzt schon eine Musterlösung geschenkt, so dass sich Dein Lernerfolg in Grenzen halten kann.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Sirius3,
rogerb hat Dir ja jetzt schon eine Musterlösung geschenkt, so dass sich Dein Lernerfolg in Grenzen halten kann.
Hoppla, aus welcher Ecke kommt das denn? Hat da jemand schlechte Laune?
Es ist im übrigen auch keine Musterlösung, sondern ein Beispiel, das man noch auf die jeweilige Situation übertragen muss.
Ich bin immer sehr dankbar für Beispiele. Aus dem Grund biete ich das anderen auch an.
Jeder kann selbst entscheiden, was er damit macht.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

So reagiere ich immer, wenn etwas sehr stark nach Hausaufgabe aussieht, wenn der Fragestellende wenig erkennen läßt, dass er/sie sich schon tiefer mit dem Problem auseinander gesetzt hat.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Tja, jetzt wo du es sagst, ...
Es stört mich aber auch nicht sonderlich, da ich mich gerne der Herausforderung stelle und dabei ja auch noch Feedback bekomme, wenn es keine gute Lösung ist.
Benutzeravatar
YAPD
User
Beiträge: 120
Registriert: Dienstag 27. Juli 2021, 23:23
Wohnort: Frankfurt am Main

Ja so geht es mir auch. Ich bin immer dankbar, wenn ich Verbesserungsvorschläge bekomme und
versuche, mich erst mit der Materie zu beschäftigen, bevor ich Euch im Forum um Rat frage :)

Cheers
YAPD
-----
Yet Another Python Developer
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@YAPD: Noch ein Beispiel, warum ein `"." in filename` nicht richtig funktioniert: Was ist mit `.bashrc`? `.config`? `pathlib.Path` hat diese Fälle schon eingebaut, man macht sich also nur unnötige Arbeit, wenn man das immer wieder selbst nachprogrammiert. Und im Zweifelsfall hat man nicht alle Randfälle bedacht.
Antworten