Delimited Files

DelimitedFiles.readdlmMethod
readdlm(source, delim::AbstractChar, T::Type, eol::AbstractChar; header=false, skipstart=0, skipblanks=true, use_mmap, quotes=true, dims, comments=false, comment_char='#')

从源中读取一个矩阵,每行(由 eol 分隔)给出一行,元素由给定的分隔符分隔。源可以是文本文件、流或字节数组。可以通过将映射段的字节数组表示作为源来使用内存映射文件。

如果 T 是数值类型,则结果是该类型的数组,任何非数值元素对于浮点类型将为 NaN,或为零。其他有用的 T 值包括 StringAbstractStringAny

如果 headertrue,则第一行数据将被读取为标题,并返回元组 (data_cells, header_cells) 而不仅仅是 data_cells

指定 skipstart 将忽略输入中的相应数量的初始行。

如果 skipblankstrue,则输入中的空行将被忽略。

如果 use_mmaptrue,则指定的 source 文件将被内存映射,以便在文件较大时可能加快速度。默认值为 false。在 Windows 文件系统上,除非文件仅被读取一次且也不被写入,否则不应将 use_mmap 设置为 true。存在一些边缘情况,其中操作系统是类 Unix 的,但文件系统是类 Windows 的。

如果 quotestrue,则用双引号(")字符括起来的列允许包含新行和列分隔符。被引用字段中的双引号字符必须用另一个双引号进行转义。将 dims 指定为预期的行和列的元组(包括标题,如果有的话)可能会加快大文件的读取。如果 commentstrue,则以 comment_char 开头的行以及任何行中跟随 comment_char 的文本将被忽略。

示例

julia> using DelimitedFiles

julia> x = [1; 2; 3; 4];

julia> y = [5; 6; 7; 8];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x y])
       end

julia> readdlm("delim_file.txt", '\t', Int, '\n')
4×2 Matrix{Int64}:
 1  5
 2  6
 3  7
 4  8

julia> rm("delim_file.txt")
source
DelimitedFiles.readdlmMethod
readdlm(source, delim::AbstractChar, eol::AbstractChar; options...)

如果所有数据都是数字,结果将是一个数字数组。如果某些元素无法解析为数字,则返回一个包含数字和字符串的异构数组。

source
DelimitedFiles.readdlmMethod
readdlm(source, delim::AbstractChar, T::Type; options...)

行结束分隔符被视为 \n

示例

julia> using DelimitedFiles

julia> x = [1; 2; 3; 4];

julia> y = [1.1; 2.2; 3.3; 4.4];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x y], ',')
       end;

julia> readdlm("delim_file.txt", ',', Float64)
4×2 Matrix{Float64}:
 1.0  1.1
 2.0  2.2
 3.0  3.3
 4.0  4.4

julia> rm("delim_file.txt")
source
DelimitedFiles.readdlmMethod
readdlm(source, delim::AbstractChar; options...)

行结束分隔符被视为 \n。如果所有数据都是数字,结果将是一个数字数组。如果某些元素无法解析为数字,则返回一个包含数字和字符串的异构数组。

示例

julia> using DelimitedFiles

julia> x = [1; 2; 3; 4];

julia> y = [1.1; 2.2; 3.3; 4.4];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x y], ',')
       end;

julia> readdlm("delim_file.txt", ',')
4×2 Matrix{Float64}:
 1.0  1.1
 2.0  2.2
 3.0  3.3
 4.0  4.4

julia> z = ["a"; "b"; "c"; "d"];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x z], ',')
       end;

julia> readdlm("delim_file.txt", ',')
4×2 Matrix{Any}:
 1  "a"
 2  "b"
 3  "c"
 4  "d"

julia> rm("delim_file.txt")
source
DelimitedFiles.readdlmMethod
readdlm(source, T::Type; options...)

列假定由一个或多个空格分隔。行结束符被视为 \n

示例

julia> using DelimitedFiles

julia> x = [1; 2; 3; 4];

julia> y = [5; 6; 7; 8];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x y])
       end;

julia> readdlm("delim_file.txt", Int64)
4×2 Matrix{Int64}:
 1  5
 2  6
 3  7
 4  8

julia> readdlm("delim_file.txt", Float64)
4×2 Matrix{Float64}:
 1.0  5.0
 2.0  6.0
 3.0  7.0
 4.0  8.0

julia> rm("delim_file.txt")
source
DelimitedFiles.readdlmMethod
readdlm(source; options...)

列假定由一个或多个空格分隔。行结束符被视为 \n。如果所有数据都是数字,结果将是一个数字数组。如果某些元素无法解析为数字,则返回一个包含数字和字符串的异构数组。

示例

julia> using DelimitedFiles

julia> x = [1; 2; 3; 4];

julia> y = ["a"; "b"; "c"; "d"];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x y])
       end;

julia> readdlm("delim_file.txt")
4×2 Matrix{Any}:
 1  "a"
 2  "b"
 3  "c"
 4  "d"

julia> rm("delim_file.txt")
source
DelimitedFiles.writedlmFunction
writedlm(f, A, delim='\t'; opts)

A(一个向量、矩阵或可迭代的可迭代行集合)作为文本写入 f(可以是文件名字符串或 IO 流),使用给定的分隔符 delim(默认为制表符,但可以是任何可打印的 Julia 对象,通常是 CharAbstractString)。

例如,两个长度相同的向量 xy 可以通过 writedlm(f, [x y])writedlm(f, zip(x, y)) 作为两个制表符分隔的文本列写入 f

示例

julia> using DelimitedFiles

julia> x = [1; 2; 3; 4];

julia> y = [5; 6; 7; 8];

julia> open("delim_file.txt", "w") do io
           writedlm(io, [x y])
       end

julia> readdlm("delim_file.txt", '\t', Int, '\n')
4×2 Matrix{Int64}:
 1  5
 2  6
 3  7
 4  8

julia> rm("delim_file.txt")
source