如何在Julia中子文件夹的文件夹中循环浏览?

时间:2019-10-06 14:15:07

标签: julia

我试图用Julia编写一个程序,该程序给定了一个起始文件夹,该程序将遍历所有子文件夹,以便我可以打开并从子文件夹中的所有文件中获取内容。如何在Julia中做到这一点?

理想情况下,如果我不提前知道,该代码将允许未指定的文件夹深度。

2 个答案:

答案 0 :(得分:8)

您可以使用walkdir,如下所示:

for (root, dirs, files) in walkdir("mydir")
    operate_on_files(joinpath.(root, files)) # files is a Vector{String}, can be empty
end

https://docs.julialang.org/en/v1/base/file/#Base.Filesystem.walkdir

编辑:这里要做的一件好事是在文件路径数组之间广播,这样您就无需对空数组进行特殊情况处理。

contents = String[]
for (root, dirs, files) in walkdir("mydir")
    # global contents # if in REPL
    push!.(Ref(contents), read.(joinpath.(root, files), String))
end

答案 1 :(得分:2)

也许编写了一个递归函数,该函数列出了dir中的所有文件夹和文件,将每个文件的内容推送到更高范围的Array,然后在每个文件夹上调用自身? 像(未经测试的代码)一样:

function outerfun(dir)
  function innerfun!(dir, filecontents)
    for name in readdir(dir)
      if isdir(name)
        innerfun!(name, filecontents)
      else
        push!(readlines(name), filecontents)
      end
    end 
  end
  filecontents = Array{String}[]
  innerfun!(dir, filecontents)
  filecontents
end