Файлы с разделителями
#
DelimitedFiles.readdlm
— Method
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")
#
DelimitedFiles.readdlm
— Method
readdlm(source, delim::AbstractChar, eol::AbstractChar; options...)
Если все данные являются числовыми, результатом будет числовой массив. Если какие-то из элементов не могут быть проанализированы как числа, будет возвращен разнородный массив из чисел и строк.
#
DelimitedFiles.readdlm
— Method
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")
#
DelimitedFiles.readdlm
— Method
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")
#
DelimitedFiles.readdlm
— Method
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")
#
DelimitedFiles.readdlm
— Method
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")
#
DelimitedFiles.writedlm
— Function
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")