2016-05-08 4 views
0

Ich habe eine große Datei mit dem Namen random.txt eine Menge von 1 enthält, und 0. Ich versuche, jeden Wert mit diesem Skript zu lesen:Lesedatei zeichenweise in Python

random_file = open("random.txt", "r") 
while True: 
    char = random_file.read(1) 
    if not char: break 
    print char 

Das Problem ist, dass statt manchmal Drucken 0 oder 1 als ein char, druckt 010, so dass es drei auf einmal liest.

Ich verwende Python 2.7.9

Die erwartete Ausgabe sollte eine Menge von Linien nur 0 oder 1. In der gleichen Zeile enthalten, sollte es nicht mehr als eine Nummer sein.

+0

Dies sollte für jede Datei deterministisch sein. Siehst du es bei jedem Lauf etwas anderes drucken? –

+0

Für die gleiche random.txt wird immer das gleiche Ergebnis gedruckt. – lpares12

+0

Können Sie das Problem bitte erklären? Was erwartest du zu sehen und warum? –

Antwort

0

In Python wertet if not 0-True da 0 ein Falsch-y-Wert:

>>> not 0 is True 
True 

Was möchten Sie wahrscheinlich ist:

random_file = open("random.txt", "r") 
while True: 
    char = random_file.read(1) 
    if char == "": break 
    print char 

Dies kann einige Ihrer Problem erklären. Nicht sicher, wo der Rest davon herkommt.