专栏
标签
Syslab 如何通过代码实现自动生成 include 文件列表、一键导入目标文件夹下的 .jl 文件
技术分享
发布于 2025-07-10 10:57:11
查看 1过去327天

可以通过下面代码实现:

src_dir = pwd() * "\\src"  # 设置要扫描的文件夹路径,注意:确保pwd()是当前工作夹

# 递归扫描文件夹,返回所有 .jl 文件的路径
function get_jl_files(dirpath)
    jl_files = []
    for entry in readdir(dirpath)  # 获取当前目录下的所有文件和子目录
        full_path = joinpath(dirpath, entry)  # 获取每个条目的完整路径
        if isdir(full_path)  # 如果是子目录,递归扫描
            append!(jl_files, get_jl_files(full_path))
        elseif endswith(entry, ".jl")  # 如果是 .jl 文件,添加到列表
            push!(jl_files, full_path)
        end
    end
    return jl_files
end

# 获取所有 .jl 文件
files = get_jl_files(src_dir)

# 注意:确保pwd()是当前工作夹
output_file = pwd() * "/output_file.jl"  # 打开输出文件,写入所有的 include 语句

f = open(output_file, "w")
for file in files
    # 生成对应的 include 语句
    # file = replace(file, "\\" => "/")
    path = replace(replace(file, pwd() => ""), "\\" => "/")   # 舍弃绝对路径pwd(),保留相对路径
    include_statement = """include("$path")\n"""
    # 将 include 语句写入文件
    write(f, include_statement)
end
close(f)
# /$(basename(file))

示例:
1.创建目标文件夹及文件夹下的 .jl 文件,这里以 MYTEST 下的 test1 文件夹为例:
image.png
2.在 MYTEST 下创建文件 output_file.jl:
image.png
3.根据代码,分别在对应文件夹路径的地方替换相应的文件夹和 .jl 文件:
image.png
4.在命令行中运行 pwd(),确认工作文件夹为当前打开的文件夹 MYTEST:
image.png
5.运行下面代码:

src_dir = pwd() * "\\test1"  # 设置要扫描的文件夹路径,注意:确保pwd()是当前工作夹

# 递归扫描文件夹,返回所有 .jl 文件的路径
function get_jl_files(dirpath)
    jl_files = []
    for entry in readdir(dirpath)  # 获取当前目录下的所有文件和子目录
        full_path = joinpath(dirpath, entry)  # 获取每个条目的完整路径
        if isdir(full_path)  # 如果是子目录,递归扫描
            append!(jl_files, get_jl_files(full_path))
        elseif endswith(entry, ".jl")  # 如果是 .jl 文件,添加到列表
            push!(jl_files, full_path)
        end
    end
    return jl_files
end

# 获取所有 .jl 文件
files = get_jl_files(src_dir)

# 注意:确保pwd()是当前工作夹
output_file = pwd() * "/output_file.jl"  # 打开输出文件,写入所有的 include 语句

f = open(output_file, "w")
for file in files
    # 生成对应的 include 语句
    # file = replace(file, "\\" => "/")
    path = replace(replace(file, pwd() => ""), "\\" => "/")   # 舍弃绝对路径pwd(),保留相对路径
    include_statement = """include("$path")\n"""
    # 将 include 语句写入文件
    write(f, include_statement)
end
close(f)
# /$(basename(file))

6.打开 output_file.jl 文件,可以看到该脚本下已经自动写入目标文件夹中所有 .jl 文件的 include 语句:
image.png

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算

全部回答

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