专栏
标签
如何读取指定目录下的所有指定后缀文件
技术分享
发布于 2025-07-22 10:47:51
查看 3过去315天

问题现象

如何读取指定目录下的所有指定后缀文件?

例如,读取 test 文件下所有以“.jl ” 后缀结尾的文件。
image.png

解决方法

  • 方法一:输入以下代码,即可获取所有以 “.jl ” 后缀结尾的文件
using TyBase
cd("test")
fileList = dir(r".*.jl$")
@show fileList

image.png

  • 方法二:自定义工具函数,代码如下:
function find_ext_files(dir::String, ext::String; has_root::Bool=true, key_words::String="")::Vector{String}
    # dir : 获取文件的路径
    # ext : 文件后缀, 如 txt 、jpg 等
    # has_root : 结果是否拼接根目录, 默认为 true
    # key_words : 是否只获取带关键字的特定文件后缀的文件, 默认为 ""
    ext_files = String[]
    for (root, _, files) in walkdir(dir)
        for file in files
            if endswith(file, ".$ext")
                file_path::String = has_root ? joinpath(root, file) : file
                if isempty(key_words)
                    push!(ext_files, file_path)
                else
                    if occursin(key_words, file)
                        push!(ext_files, file_path)
                    end
                end
            end
        end
    end
    return ext_files
end

工具函数使用方法:

  • 默认使用(拼接根目录)
find_ext_files("test", "jl")
# 5-element Vector{String}:
#  "test/c.jl"
#  "test/f.jl"
#  "test/test.jl"
#  "test/test_1.jl"
#  "test/w/t.jl"
  • 带 has_root 关键字(不拼接根目录)
find_ext_files("test", "jl"; has_root=false)
# 5-element Vector{String}:
#  "c.jl"
#  "f.jl"
#  "test.jl"
#  "test_1.jl"
#  "t.jl"
  • 带 key_words 关键字(只获取带关键字的特定文件后缀的文件)
find_ext_files("test", "jl"; key_words="test")
# 2-element Vector{String}:
#  "test/test.jl"
#  "test/test_1.jl"
  • 带 key_words、has_root 关键字(不拼接根目录,只获取带关键字的特定文件后缀的文件)
find_ext_files("test","jl"; key_words="test",has_root=false)
# 2-element Vector{String}:
#  "test.jl"
#  "test_1.jl"
所属专栏:其他
产品信息:科学计算与系统建模仿真平台MWORKS
其他

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天