2016-04-13 4 views
0

Ich habe eine einfache Routine bekam, die nieWie beendet man eine While-Schleife in Python?

import sys 
infile = sys.argv[1] 
outfile = sys.argv[2] 
count=1 
print 'Input file is ', infile 
print 'Output file is ', outfile 
instream = open(infile,'r') 
while True: 
    line=instream.readline() 
    if line[0:5]=='<?xml': 
    print 'new record', count 
    count=count+1 
    if line == "eof": 
     print 'end' 
     break 

beendet Diese Infield liest ... aber nie endet. Was muss ich tun?

Antwort

0

readline() gibt die Zeichenfolge eof nicht zurück, um das Ende der Datei anzugeben; Es gibt die leere Zeichenfolge zurück. (Hinweis readline behält sich das Neue-Zeile, die jede Zeile endet, so dass eine leere Zeile würde wie '\n' dargestellt werden,. So eine wirklich leere Zeile kann nur bedeuten, dass keine Daten gelassen wird)

Sie konnte schreiben

while True: 
    line = instream.readline() 
    # ... 
    if line == "": 
     break 

aber in der Regel behandeln Sie einfach die Datei als Iterator:

for line in instream: 
    if line[0:5] == '<?xml': 
     print 'new record', count 
     count = count + 1 
Verwandte Themen