2016-07-27 10 views
1

Wir haben eine Textdatei mit mehreren Zeilen. Die Zeilen könnten in CR + LF oder LF enden. Jede Zeile hat mehrere Felder, die durch einen field_separator (ein oder mehrere Zeichen) getrennt sind.Es gibt einige Vorteile beim Zugriff auf eine Textdatei im Binärmodus?

Probe 1:

field_separator = '\n' 
with open('data.txt','r') as f: 
    for line in f: 
     line = line.split(field_separator) 
     for element in line: 
      print(element) 

Probe 2:

field_separator = b'\n' 
with open('data.txt','br') as f: 
    for line in f: 
     if line.endswith(b'\n'): 
      line = line[0:-1] 
     line = line.split(field_separator) 
     for element in line: 
      print(element) 

Frage: Es gibt einige adventage in Zugang ist die Textdatei im Binärmodus (Probe 2 vs Probe 1)

Antwort

4

Wenn Sie den Zeilenende-Stil beibehalten müssen, müssen Sie binären Modus verwenden. Im Textmodus werden Zeilenenden immer konsistent umgesetzt.

Wenn Sie Python 3 verwenden und den Zeichencodierungsmodus der Datei nicht kennen, können Sie den Binärmodus verwenden, um die Datei zu lesen, ohne Dekodierungsfehler auszulösen. Es liegt in Ihrer Verantwortung, die Bytes in Unicode-Strings zu dekodieren.