Wie kann ich DOS-Zeilenumbrüche in einer Datei erkennen?

8

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?

    
chiggsy 09.05.2010, 18:16
quelle

6 Antworten

6

Sie könnten die Zeichenfolge nach \r\n durchsuchen. Das ist DOS-Stil Zeilenende.

BEARBEITEN: Sehen Sie sich das

an     
nc3b 09.05.2010, 18:23
quelle
22

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:

%Vor%

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%     
EOL 10.05.2010 07:26
quelle
3

(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!)

    
johntellsall 09.05.2010 20:29
quelle
1

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).

    
Jonik 09.05.2010 19:04
quelle
0

dos Zeilenumbrüche sind \r\n , nur unix \n . Suchen Sie einfach nach \r\n .

    
Femaref 09.05.2010 18:23
quelle
0

Mit grep & amp; Bash:

%Vor%     
shallo 10.05.2010 13:59
quelle