텍스트 파일을 열고 한 줄씩 읽으려면 어떻게합니까? 내가 관심있는 두 가지 경우가 있습니다.
- 한 번에 배열의 모든 줄을 가져옵니다.
- 한 번에 한 줄씩 처리하십시오.
두 번째 경우에는 한 번에 모든 줄을 메모리에 보관하고 싶지 않습니다.
답변
행의 배열로 한 번에 메모리에 파일을 읽는 것은 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
열린 I / O 객체에서 한 줄을 읽거나 파일 이름이 주어지면 파일을 열고 첫 번째 줄을 읽는 함수를 보여줍니다 .
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 파일의 각 문자를 한 번에 하나씩 읽는 방법은 무엇입니까?