我正在尝试使用Julia解析大量文本文件,我想循环遍历文件名数组,而不是键入函数调用来单独读取每个文件。到目前为止,我一直无法找到一种方法来搜索文件夹中与模式匹配的文件。
是否有基础库Julia函数将返回给定文件夹中的所有文件名,与给定的字符串模式匹配?
R中的等效函数为list.files()
,如果这有助于传达我想要的内容。
答案 0 :(得分:38)
在Julia中,相当于list.files()
的是readdir([path])
我知道没有内置目录搜索,但它是一个单行:
searchdir(path,key) = filter(x->contains(x,key), readdir(path))
更新:由于至少Julia v0.7,contains()
已弃用occursin(substring, string)
。所以上面的过滤器现在是:
searchdir(path,key) = filter(x->occursin(key,x), readdir(path))
答案 1 :(得分:3)
另一种解决方案是使用Glob.jl包。例如,如果目录中包含以下文件列表:
foo1.txt
foo2.txt
foo3.txt
bar1.txt
foo.jl
你想找到以" foo"开头的所有文本文件。你会写
using Glob
glob("foo*.txt") #if searching the working directory
#output:
#"foo1.txt"
#"foo2.txt"
#"foo3.txt"
glob("foo*.txt","path/to/dir") #for specifying a different directory
#output:
#"path/to/dir/foo1.txt"
#"path/to/dir/foo2.txt"
#"path/to/dir/foo3.txt"