Leggere un file in memoria tutto in una volta come un array di linee è solo una chiamata alla readlines
funzione:
julia> words = readlines("/usr/share/dict/words")
235886-element Array{String,1}:
"A"
"a"
"aa"
⋮
"zythum"
"Zyzomys"
"Zyzzogeton"
Per impostazione predefinita, questo elimina le nuove righe ma se si desidera mantenerle, è possibile passare l'argomento della parola chiave keep=true
:
julia> words = readlines("/usr/share/dict/words", keep=true)
235886-element Array{String,1}:
"A\n"
"a\n"
"aa\n"
⋮
"zythum\n"
"Zyzomys\n"
"Zyzzogeton\n"
Se hai già un oggetto file aperto, puoi anche passarlo alla readlines
funzione:
julia> open("/usr/share/dict/words") do io
readline(io) # throw out the first line
readlines(io)
end
235885-element Array{String,1}:
"a"
"aa"
"aal"
⋮
"zythum"
"Zyzomys"
"Zyzzogeton"
Ciò dimostra la readline
funzione, che legge una singola riga da un oggetto I / O aperto, o quando viene assegnato un nome file, apre il file e legge la prima riga da esso:
julia> readline("/usr/share/dict/words")
"A"
Se non vuoi caricare tutti i contenuti del file contemporaneamente (o se stai elaborando dati di streaming come da un socket di rete), puoi utilizzare la eachline
funzione per ottenere un iteratore che produce linee una alla volta:
julia> for word in eachline("/usr/share/dict/words")
if length(word) >= 24
println(word)
end
end
formaldehydesulphoxylate
pathologicopsychological
scientificophilosophical
tetraiodophenolphthalein
thyroparathyroidectomize
Alla eachline
funzione può readlines
anche essere assegnato un handle di file aperto da cui leggere le righe. Puoi anche "ruotare il tuo" iteratore aprendo il file e chiamando readline
ripetutamente:
julia> open("/usr/share/dict/words") do io
while !eof(io)
word = readline(io)
if length(word) >= 24
println(word)
end
end
end
formaldehydesulphoxylate
pathologicopsychological
scientificophilosophical
tetraiodophenolphthalein
thyroparathyroidectomize
Ciò equivale a quello che eachline
fa per te ed è raro doverlo fare da soli, ma se è necessario, l'abilità è lì. Per ulteriori informazioni sulla lettura di un carattere carattere per carattere, vedere questa domanda e risposta: Come possiamo usare julia per leggere ogni carattere di un file .txt, uno alla volta?