朱莉娅:我如何循环写和存储文件?

vin*_*cet 2 makefile julia

我有一个庞大的数据集,它分为k个小型数据集,其中k = 100。我想将这些小型数据集存储在不同的文件中。为了存储我的海量数据集,我使用了以下指令:

using JLD, HDF5
    X=rand(100000)
    file = jldopen("path to my file/mydata.jld", "w") # the extension of file is jld so you should add packages JLD and HDF5,  Pkg.add("JLD"), Pkg.add("HDF5"),
    write(file, "X", X)  # alternatively, say "@write file A"
    close(file)
Run Code Online (Sandbox Code Playgroud)

知道l将我的数据集分为k个子数据集,其中k = 100

function get_mini_batch(X)

    mini_batches = round(Int, ceil(X / 100))

            for i=1:mini_batches
                mini_batch = X[((i-1)*100 + 1):min(i*100, end)]
                file= jldopen("/path to my file/mydata.jld", "w")
                write(file, "mini_batch", mini_batch)  # alternatively, say "@write file mini_batch"
                 lose(file)
            end
end
Run Code Online (Sandbox Code Playgroud)

但是此功能允许将不同的子数据集存储在一个文件中,该文件在每次迭代时都会被覆盖。

file= jldopen("/path to my file/mydata1.jld", "w")  # at each iteration l want to get files : mydata1, mydata2 ... mydata100
file= jldopen("/path to my file/mydata2.jld", "w")
file= jldopen("/path to my file/mydata3.jld", "w")
file= jldopen("/path to my file/mydata4.jld", "w")
.
.
.
file= jldopen("/path to my file/mydata100.jld", "w")
Run Code Online (Sandbox Code Playgroud)

或者,我尝试了此过程函数get_mini_batch(X)

    mini_batches = round(Int, ceil(X / 100))

            for i=1:mini_batches
                mini_batch[i] = X[((i-1)*100 + 1):min(i*100, end)]
                file[i]= jldopen("/path to my file/mydata.jld", "w")
                write(file, "mini_batch", mini_batch)  # alternatively, say "@write file mini_batch"
                 lose(file)
            end
end
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在此行代码文件中创建变量i = 1 .... 100 [i] = jldopen(“ /我的文件路径/ mydata(i).jld ”,“ w ”)

nic*_*y12 5

您正在寻找字符串格式

要创建文件名,您可以使用@sprintf()。然后,您可以使用这些字符串将对象写入磁盘。

julia> using Printf  # Needed in Julia 1.0.0
julia> @sprintf("myfilename%02.d.jld", 5)
"myfilename05.jld"
Run Code Online (Sandbox Code Playgroud)

循环示例:

julia> for i in 1:3
           println(@sprintf("myfilename%03.d.jl", i))
       end
myfilename001.jl
myfilename002.jl
myfilename003.jl
Run Code Online (Sandbox Code Playgroud)

%03.d在这里显示了如何在文件名中添加前导零。这将在以后进行排序时有所帮助。