Ich habe eine Reihe von Dateien. Einige sind Unix-Zeilenenden, viele sind DOS. Ich möchte jede Datei testen, um zu sehen, ob if dos formatiert ist, bevor ich die Zeilenenden umschalte.
Wie würde ich das tun? Gibt es eine Flagge, für die ich testen kann? Etwas ähnliches?
Python kann automatisch erkennen, welche Newline-Konvention in einer Datei verwendet wird , dank des "universal newline mode" ( U
), und Sie können auf Pythons Schätzung über das newlines
-Attribut zugreifen Dateiobjekte:
Dies gibt das Zeilenende-Ende der ersten Zeile (Unix, DOS, usw.), falls vorhanden.
Wie John M. darauf hingewiesen hat, wenn Sie zufällig eine pathologische Datei haben, die mehr als eine Zeilenumbruch-Kodierung verwendet, ist f.newlines
ein Tupel mit allen bisher gefundenen Zeilenumbruch-Kodierungen, nachdem Sie viele Zeilen gelesen haben.
Referenz: Ссылка
Wenn Sie nur eine Datei konvertieren möchten, können Sie einfach:
%Vor%(Python 2 only :) Wenn Sie nur Textdateien lesen möchten, entweder DOS oder Unix-formatiert, funktioniert das:
%Vor%Das heißt, der universelle Python-Dateileser verwendet automatisch alle verschiedenen Zeilenende-Markierungen und übersetzt sie in "\ n".
(Vielen Dank!)
Als kompletter Python-Neuling & amp; nur zum Spaß, ich habe versucht, eine minimalistische Möglichkeit zu finden, dies für eine Datei zu überprüfen. Das scheint zu funktionieren:
%Vor%Bearbeiten : vereinfacht wie in John Machins Kommentar (keine Notwendigkeit, reguläre Ausdrücke zu verwenden).
Tags und Links python bash file line-breaks line-endings