Meine Frage bezieht sich auf die Dateieingabe in Python mit open()
. Ich habe eine Textdatei mytext.txt
mit 3 Zeilen. Ich versuche, zwei Dinge mit dieser Datei zu tun: Drucken Sie die Zeilen und drucken Sie die Anzahl der Zeilen.Python Schleife durch die Eingabedatei
habe ich versucht, den folgenden Code:
input_file = open('mytext.txt', 'r')
count_lines = 0
for line in input_file:
print line
for line in input_file:
count_lines += 1
print 'number of lines:', count_lines
Ergebnis: es druckt die 3 Zeilen richtig, aber druckt "Anzahl der Zeilen: 0" (statt 3)
fand ich zwei Möglichkeiten, es zu lösen, und bekommen es 3
drucken:
1) ich verwende eine Schleife anstelle von zwei
input_file = open('mytext.txt', 'r')
count_lines = 0
for line in input_file:
print line
count_lines += 1
print 'number of lines:', count_lines
2) nach der ersten Schleife, definiere ich input_file wieder
input_file = open('mytext.txt', 'r')
count_lines = 0
for line in input_file:
print line
input_file = open('mytext.txt', 'r')
for line in input_file:
count_lines += 1
print 'number of lines:', count_lines
Für mich scheint es, wie die Definition input_file = ...
für nur einen Looping gültig ist, als ob es gelöscht wurde, nachdem ich es verwenden für eine Schleife. Aber ich verstehe nicht warum, wahrscheinlich ist es mir noch nicht 100% klar, wie variable = open(filename)
in Python behandelt wird.
Übrigens sehe ich, dass es in diesem Fall besser ist, nur eine Schleife zu verwenden. Ich denke jedoch, dass ich diese Frage klären muss, da es Fälle geben kann, in denen ich sie nutzen kann/muss.
Wenn Sie Zeilen verarbeiten wollen, warum verwenden nicht 'readlines()' – tMC
readlines wird Ihre Maschine dreschen und möglicherweise zum Absturz bringen, wenn man es plötzlich mit einer großen Datei. Es ist normalerweise besser, Zeile für Zeile zu lesen. – user1277476
Sie können auch readline() verwenden, die jeweils eine Zeile liest. Oder verwenden Sie den optionalen Größenhinweis-Parameter: readlines (Größenhinweis). Dadurch wird die Anzahl der gesamten Zeilen zurückgegeben, die in einen Puffer mit "Größenhinweis" passen. – ncultra