我在为自己的研究教授自己的Elixir,通常我的研究需要打开几十或者几百个文本文件,结合这些文件中的数据以及操纵数据。我想知道如何打开目录中的所有文件并访问所有这些文件中的数据。我想避免使用for循环,因为循环遍历100个文件会非常缓慢。我认为Stream模块非常适合我的目的,但我不知道如何使用它。在Elixir中打开并收集多个文件中的数据
下面我有一些测试代码。它所要做的就是打开一堆包含随机数的文件,将文件中的数字字符串转换为整数,然后对它们进行排序。除了开放文件部分,一切都可以工作你可以看到我试图使用Path模块,并且它可以成功找到所有文件,但是我不知道如何以可用的方式将它传递给sort_num函数。谢谢大家的帮助!
defmodule OpenFiles do
def file_open do
Path.wildcard("numfiles/*.txt")
end
def sort_num do
file_open
|> File.stream!
|> Stream.map(&String.strip/1)
|> Stream.map(&String.to_integer/1)
|> Enum.sort
end
end
IO.inspect OpenFiles.sort_num
真的很好,详细的答案!非常感谢。是的,我认为平行地图的实施将是我最好的选择。 –