如何在Linux集群上使用Julia的glob处理以正斜杠开头的文件路径?
解决Julia Glob包绝对路径匹配失败的问题
核心原因
Glob.jl的glob函数不允许匹配模式以/开头,它默认第一个参数是相对于目标目录的匹配规则,而非完整绝对路径。
两种解决方法
方法一:拆分目录与匹配模式(推荐)
把绝对路径拆成「目标目录」和「文件名匹配规则」两部分,分别作为glob的第二个和第一个参数传入:
using Glob # 目标目录是绝对路径,匹配规则只写文件名部分 file_paths = glob("*_*_*.csv", "/global/cdirs/stuff")
这样就能正确匹配指定目录下所有符合*_*_*.csv格式的文件。
方法二:基于根目录匹配
如果想保留类似完整路径的写法,可以把根目录/作为第二个参数,模式从根目录下的子路径开始写:
using Glob file_paths = glob("global/cdirs/stuff/*_*_*.csv", "/")
效果和方法一完全一致,只是写法不同。
额外验证方式
如果不确定匹配结果,也可以用readdir配合过滤实现相同效果(虽然不如Glob简洁):
dir_path = "/global/cdirs/stuff" file_paths = joinpath.(dir_path, filter(f -> endswith(f, ".csv") && count('_', f) >= 2, readdir(dir_path)))
内容的提问来源于stack exchange,提问作者math_lover
相关产品推荐
相关产品推荐

