Julia'da dosya satır satır nasıl okunur?


18

Bir metin dosyasını nasıl açarım ve satır satır okuyabilirim? Yanıtları ilgilendiğim iki farklı durum var:

  1. Bir dizideki tüm satırları aynı anda alın.
  2. Her satırı birer birer işleyin.

İkinci durumda, tüm satırları bir kerede hafızada tutmak istemiyorum.

Yanıtlar:


25

Bir dosyayı bir satır dizisi olarak bir kerede belleğe okumak, sadece readlinesişleve bir çağrıdır :

julia> words = readlines("/usr/share/dict/words")
235886-element Array{String,1}:
 "A"
 "a"
 "aa"
 
 "zythum"
 "Zyzomys"
 "Zyzzogeton"

Varsayılan olarak, bu yeni satırları atar, ancak bunları saklamak istiyorsanız, anahtar kelime bağımsız değişkenini iletebilirsiniz 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"

Zaten açık bir dosya nesneniz varsa, bunu readlinesişleve de aktarabilirsiniz :

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"

Bu readline, açık bir G / Ç nesnesinden tek bir satırı okuyan veya bir dosya adı verildiğinde dosyayı açan ve ondan ilk satırı okuyan işlevi gösterir :

julia> readline("/usr/share/dict/words")
"A"

Dosya içeriklerini bir kerede yüklemek istemiyorsanız (veya bir ağ soketinden gelen akış verilerini işliyorsanız), eachlineişlevi birer birer satır üreten bir yineleyici almak için kullanabilirsiniz :

julia> for word in eachline("/usr/share/dict/words")
           if length(word) >= 24
               println(word)
           end
       end
formaldehydesulphoxylate
pathologicopsychological
scientificophilosophical
tetraiodophenolphthalein
thyroparathyroidectomize

eachlineFonksiyonu gibi olabilir readlines, ayrıca gelen satırları okumak için açılmış bir dosya tanıtıcısı verilecek. Ayrıca dosyayı açıp readlineart arda çağırarak yineleyicinizi "kendi yuvarlayabilirsiniz" :

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

Bu eachlinesizin için ne ile eşdeğerdir ve bunu kendiniz yapmanız nadirdir, ancak ihtiyacınız varsa yetenek oradadır. Bir dosyayı karakter karakter okuma hakkında daha fazla bilgi için bu soruya ve cevaba bakın: Julia'yı .txt dosyasının her karakterini birer birer okumak için nasıl kullanıyoruz?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.