Seite 1 von 1

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

Verfasst: Montag 2. August 2021, 10:47
von Python123.py
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

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

Verfasst: Montag 2. August 2021, 11:04
von YAPD
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

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

Verfasst: Montag 2. August 2021, 11:10
von rogerb
@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))

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

Verfasst: Montag 2. August 2021, 11:12
von Python123.py
Hallo an alle,
vielen Dank für euere Antworten.

Ich werde das später alles in Ruhe ausprobieren

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

Verfasst: Montag 2. August 2021, 11:13
von YAPD
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

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

Verfasst: Montag 2. August 2021, 11:14
von Sirius3
@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.

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

Verfasst: Montag 2. August 2021, 13:06
von rogerb
@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.

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

Verfasst: Montag 2. August 2021, 13:37
von Sirius3
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.

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

Verfasst: Montag 2. August 2021, 14:24
von rogerb
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.

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

Verfasst: Montag 2. August 2021, 15:27
von YAPD
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

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

Verfasst: Montag 2. August 2021, 21:37
von narpfel
@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.