La mia domanda è relativa all'input di file in Python, utilizzando open()
. Ho un file di testo mytext.txt
con 3 linee. Sto cercando di fare due cose con questo file: stampare le linee e stampare il numero di linee.python looping attraverso il file di input
Ho provato il codice seguente:
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
risultati: esso stampa le 3 linee correttamente, ma stampa "numero di linee: 0" (invece di 3)
ho trovato due modi per risolverlo, e farlo stampare 3
:
1) io uso un loop invece di due
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) dopo il primo giro, mi definisco file_input nuovo
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
A me, sembra che la definizione input_file = ...
è valido per un solo looping, come se fosse stato eliminato dopo lo uso per un ciclo. Ma non capisco perché, probabilmente non è ancora chiaro al 100%, come sia stato trattato variable = open(filename)
in Python.
A proposito, vedo che in questo caso è meglio utilizzare solo un ciclo. Tuttavia, sento di dover chiarire questa domanda, poiché potrebbero esserci casi in cui posso/devo farne uso.
Se si desidera elaborare linee, perché non usare 'readlines()' – tMC
readlines renderanno la vostra macchina thrash e possibilmente in crash se improvvisamente utilizza con un file di grandi dimensioni. Di solito è meglio leggere una riga alla volta. – user1277476
puoi anche usare readline(), che legge una riga alla volta. O per evitare il thrashing/crash con readlines, usa il parametro opzionale hint size: readlines (suggerimento per la dimensione). Ciò restituirà il numero di intere righe che possono rientrare in un buffer di "suggerimento di dimensione". – ncultra