Julia中readdir存在目录但isdir过滤结果为空的问题排查
问题根因
readdir默认返回的是目标目录下条目对应的裸文件名/文件夹名,不会自动拼接你传入的目录路径。你执行filter(isdir, readdir("data/"))时,isdir实际校验的是当前工作目录下的同名路径,根本不是data/文件夹里的对应条目。
你之前单独测试时手动补了完整路径,执行isdir("data/SST4Fj1_7d384.result")能得到true,但过滤流程里传给isdir的参数是没有前缀的"SST4Fj1_7d384.result",等价于执行isdir("SST4Fj1_7d384.result")——当前工作目录下不存在这个条目,判断结果自然是false,所有条目都被过滤掉,最终返回空数组。
修复方案
根据你需要的返回格式选对应写法即可:
- 如果希望过滤结果直接返回可直接使用的完整路径,给
readdir加join=true参数,让返回值自动拼接目录前缀:# 返回结果示例:["data/SST4Fj1_7d384.result"] filter(isdir, readdir("data/"; join=true)) - 如果希望过滤结果保留裸文件名格式(和
readdir默认返回格式一致),手动拼接路径再做判断:# 返回结果示例:["SST4Fj1_7d384.result"] filter(name -> isdir(joinpath("data", name)), readdir("data/"))
内容的提问来源于stack exchange,提问作者Aephir
相关产品推荐
相关产品推荐

