如何仅列出 julia 目录的子目录?

How to list only sub-diectories of a directory in julia?

我尝试列出目录 /path/to/parent/folder 中的目录,如下所示:

parent_dir ="/path/to/parent/folder"
dirs = filter(x -> isdir(x), readdir(parent_dir))

for dir in dirs
println(dir)
end

但什么都不打印!

请帮我只列出父目录的子目录!

我猜您当前的工作目录 pwd()parent_dir 不一样?

readdir(parent_dir) 生成条目列表,例如只是名称,而不是完整路径,当您调用 isdir(x) 时,Julia 相对于当前工作目录工作。您可能想要做的是:

parent_dir ="/path/to/parent/folder"
dirs = filter(x -> isdir(joinpath(parent_dir, x)), readdir(parent_dir))

for dir in dirs
    println(dir)
end

例如在 x 前面加上您从中读取它的文件夹 joinpath.


从 Julia 版本 1.4 开始,您可以使用 join 关键字参数 readdir,它直接为您提供完整路径:

parent_dir ="/path/to/parent/folder"
dirs = filter(isdir, readdir(parent_dir; join=true))

除了 readdir,您还可以查看 walkdir,它可以让您做更多事情。它生成一个遍历给定文件夹下的目录树的迭代器。对于您的特定用例,代码如下所示:

parent_dir ="/path/to/parent/folder"
dirs = first(walkdir(parent_dir))[2]

它大约与 filter/readdir 方法一样快,也许稍微慢一点,但它还有很多其他用途。