Как перечислить только поддиректории каталога в юлии? - PullRequest
0 голосов
/ 09 мая 2019

Я попытался перечислить каталоги в каталоге / 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

но ничего не печатает!

Пожалуйста, помогите мне перечислить только подкаталоги родительского каталога!

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Я предполагаю, что ваш текущий рабочий каталог pwd() не совпадает с parent_dir?

readdir(parent_dir), в результате получается список записей, например, только имя, а не полный путь, икогда вы звоните isdir(x) Юлия работает относительно текущего рабочего каталога.Что вы, вероятно, хотите сделать, это что-то вроде:

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

for dir in dirs
    println(dir)
end

например, prepend x с папкой, из которой вы читаете его с помощью joinpath.

1 голос
/ 09 мая 2019

В дополнение к readdir вы можете проверить walkdir, что позволяет вам делать гораздо больше.Он создает итератор, который пересекает дерево каталогов ниже заданной папки.Для вашего конкретного варианта использования код будет выглядеть следующим образом:

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

Это примерно так же быстро, как подход filter / readdir, возможно, немного медленнее, но у него много других применений.

...