Документация Engee

Файлы с разделителями

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 могут быть String, AbstractString и Any.

Если header имеет значение true, то первая строка данных будет прочитана как заголовок и будет возвращен кортеж (data_cells, header_cells) вместо только data_cells.

При указании значения skipstart будет пропущено соответствующее число строк от начала входного файла.

Если указать true для skipblanks, пустые строки ввода будут игнорироваться.

Если указано true для use_mmap, заданный в source файл будет размещен в памяти, что может ускорить работу с файлами большого размера. Значение по умолчанию — false. В файловой системе Windows задавать для use_mmap значение true не следует, кроме случаев, когда в файле выполняется только одно чтение и не выполняется запись. Бывают исключительные случаи, когда используется Unix-подобная ОС с Windows-подобной файловой системой.

Если quotes имеет значение true, то, когда столбец заключен в двойные кавычки ("), в нем допустимо использовать символы новой строки и разделители столбцов. Если внутри заключенного в двойные кавычки поля используются другие двойные кавычки, необходимо в качестве escape-символа их дублировать. Если указать dims в качестве кортежа ожидаемых строк и столбцов (включая заголовок при его наличии), это может ускорить чтение файлов большого размера. Если comments имеет значение true, то строки, начинающиеся с 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")
readdlm(source, delim::AbstractChar, eol::AbstractChar; options...)

Если все данные являются числовыми, результатом будет числовой массив. Если какие-то из элементов не могут быть проанализированы как числа, будет возвращен разнородный массив из чисел и строк.

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")
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")
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")
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")
writedlm(f, A, delim='\t'; opts)

Записывает A (вектор, матрицу или итерируемую коллекцию итерируемых строк) в виде текста в f (может быть строкой имени файла либо IO-потоком) с применением заданного разделителя delim (по умолчанию это знак табуляции, но можно использовать любой печатаемый объект Julia, как правило — Char или AbstractString).

Например, два вектора x и y одинаковой длины можно записать в виде двух столбцов разделенного табуляцией текста в f с помощью writedlm(f, [x y]) либо writedlm(f, zip(x, y)).

Примеры

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