JULIA:如何在循环中编写和存储文件?

时间:2016-06-24 11:54:38

标签: makefile julia

我有一个庞大的数据集,分为k个迷你数据集,其中k = 100。知道我想将这些迷你数据集存储在不同的文件中。 存储我的海量数据集l使用了以下说明:

$j('#submit').click(function(event){
  $j('#comment').val('');
  event.preventDefault();
});

知道l将我的数据集划分为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)

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

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

或者我尝试了这个程序  function get_mini_batch(X)

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")

但我不知道如何在这个行代码文件[i] = jldopen(" /我的文件的路径/ mydata(i).jld "," w")

2 个答案:

答案 0 :(得分:4)

您正在寻找string formatting

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

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

循环中的示例:

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

我在这里使用%03.d来说明如何在文件名中添加前导零。这将有助于以后的排序。

答案 1 :(得分:1)

我同意niczky12您正在寻找字符串格式。但我会亲自用另一种方式写出来:

"/path to my file/mydata$i.jld"

而不是使用sprintf

示例:

julia> i = 4
4

julia> "/path/mydata$i.jld"
"/path/mydata4.jld"