Wenn man das richtige Encoding denn wüsste....
Ich habe hier einen Schwung an Textdateien die ich in Markdown-Dateien umwandeln möchte (das einfügen der Markierungen für z.B. Links ist jetzt nicht das Problem). Die erste Textdatei mal versuchsweise mit einem einfachen Editor aufgemacht: sieht aber merkwürdig aus...

'Sublime Text' erzählt mir beim öffnen "Opened as UTF-16 LE with BOM"
Also im ersten Versuch im Konverter alle Dateien mit den Encoding utf_16_le geöffnet und mit Encoding utf_8 wieder geschrieben... bei einer Datei steigt der Konverter mit einem UnicodeError aus. Also Konverter erweitert, so das im Fehlerfall die Datei ganze nochmal mit encoding 'iso8859' geöffnet wird. Läuft jetzt zwar ohne Fehler durch, aber manche der erzeugten utf8 Markdown-Dateien sehen mir sehr asiatisch aus...
Da erzählt mir "Sublime Text" dass die Quelldateien offenbar schon mit dem Encoding uf8 vorliegen.

Ich werde gleich mal beim Konverter das Encoding für den Fehlerfall von iso8859 auf utf8 ändern, dann sollte meiner Meinung nach alles richtig erkannt werden.
[P.S: Stimmt natürlich nicht! Ich brauche noch die Encoding-Erkennung... ]
Aber für den produktiven Einsatz ist dieses Vorgehen (Encoding über Sublime Text ermitteln) ja nun gar nicht zu gebrauchen. Da gehört eine gescheite Erkennung vom Encoding her (über den BOM usw.)...
Gibt es da schon etwas fertiges? Irgendeine Funktion die ich in der Python-Doku übersehen habe? Ich bin doch nach den Entwicklern von Sublime Text mindestens der zweite der so eine Funktionen gebrauchen kann (und die ganzen Fragesteller hier im Forum, die ihre Textdateien bisher ohne Encoding öffnen, stehen auch noch in der Warteschlange).
Ich würde jetzt für meine Encoding-Erkennung folgendes Mapping vom erkannten BOM auf ein Encoding wählen:
codecs.BOM_UTF16_BE : utf_16_be
codecs.BOM_UTF16_LE : utf_16_le
codecs.BOM_UTF32_BE : utf_32_be
codecs.BOM_UTF32_LE : utf_32_le
alles andere würde als utf8 eingelesen. Passt das so oder könnte ich Probleme bekommen?