gpt4 book ai didi

file-io - 如何在Julia中逐行读取文件?

转载 作者:行者123 更新时间:2023-12-03 14:47:42 25 4
gpt4 key购买 nike

如何打开文本文件并逐行阅读?我对以下两种情况感兴趣:

  • 一次获​​取数组中的所有行。
  • 一次处理每一行。

  • 对于第二种情况,我不想一次将所有行都保留在内存中。

    最佳答案

    以行数组的形式一次将文件读入内存只是对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为您执行的操作,很少需要自己执行此操作,但是如果需要,可以使用此功能。有关逐字符读取文件的更多信息,请参见以下问答: How do we use julia to read through each character of a .txt file, one at a time?

    关于file-io - 如何在Julia中逐行读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169711/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com