Чтение файла в память сразу как массив строк - это просто вызов readlinesфункции:
julia> words = readlines("/usr/share/dict/words")
235886-element Array{String,1}:
"A"
"a"
"aa"
⋮
"zythum"
"Zyzomys"
"Zyzzogeton"
По умолчанию это отбрасывает новые строки, но если вы хотите сохранить их, вы можете передать ключевое слово аргумент 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"
Если у вас есть уже открытый файловый объект, вы также можете передать его в readlinesфункцию:
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"
Это демонстрирует readlineфункцию, которая читает одну строку из открытого объекта ввода-вывода или, когда ему присваивается имя файла, открывает файл и читает первую строку из него:
julia> readline("/usr/share/dict/words")
"A"
Если вы не хотите загружать содержимое файла сразу (или обрабатываете потоковые данные, например, из сетевого сокета), вы можете использовать eachlineфункцию, чтобы получить итератор, который выдает строки по одной за раз:
julia> for word in eachline("/usr/share/dict/words")
if length(word) >= 24
println(word)
end
end
formaldehydesulphoxylate
pathologicopsychological
scientificophilosophical
tetraiodophenolphthalein
thyroparathyroidectomize
eachlineФункция может, например readlines, также может быть дан открытый дескриптор файла для чтения строки из. Вы также можете «свернуть свой» итератор, открыв файл и readlineнеоднократно вызывая :
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
Это эквивалентно тому, что eachlineделает для вас, и редко нужно делать это самостоятельно, но если вам нужно, способность есть. Для получения дополнительной информации о считывании файла символ за символом см. Этот вопрос и ответ: Как мы используем julia для чтения каждого символа файла .txt, по одному за раз?