Чтение файла в память сразу как массив строк - это просто вызов 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, по одному за раз?