Size: a a a

Язык программирования Julia / Julia programming language

2020 February 24

AZ

Aleksey Zhdanov in Язык программирования Julia / Julia programming language
Именно читать?
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
for el in parse.(Int, split(readline("/tmp/foo.csv"), ";"))
   x = el
end
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Вместо /tmp/foo.csv надо подставить путь до своего файла
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ну и конечно что-то поумнее чем x = el сделать  ^_^
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Но я всё ещё уверен, что это не та проблема, которая решается на самом деле и скоро будут новые вопросы 😊
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
А можно ли его читать как итератор, а не разом в память загонять
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
В данном случае не критично конечно
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Хороший вопрос.
Точно можно через mmap, хотя я сам никогда не пробовал.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Но вообще, надо поискать, есть ли в Julia что-то типа стриминга файлов.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Да, конечно есть.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
open("/tmp/foo.csv") do f
   val = Char[]
   while !eof(f)
       c = read(f, Char)
       if (c == ';') | (c == '\n')
           println(parse(Int, String(val)))
           empty!(val)
       else
           push!(val, c)
       end
   end

   if !isempty(val)
       println(parse(Int, String(val)))
   end
end
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Вот такой примитивный стрим ридер с квази fsm
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Да, так можно ) просто думал, может они уже сами CSV в итератор обернули
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
А! Кто-нибудь наверняка это сделал.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Товарищ из CSVFiles говорил, что у него в планах есть сделать стримминг.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Но правда CSVFiles настолько ужасные, что толку от этого мало.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Вот из мануала CSV

The returned CSV.File object supports the Tables.jl interface and can iterate CSV.Rows
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Так что видимо уже умеют.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
for row in CSV.File(file)
   println("a=$(row.a), b=$(row.b), c=$(row.c)")
end
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Точнее даже так

for row in CSV.Rows(file)
   println("a=$(row.a), b=$(row.b), c=$(row.c)")
end


While similar to CSV.File, CSV.Rows provides a slightly different interface, the tradeoffs including:

* Very minimal memory footprint; while iterating, only the current row values are buffered
* Only provides row access via iteration; to access columns, one can stream the rows into a table type
* Performs no type inference; each column/cell is essentially treated as Union{String, Missing}, users can utilize the performant Parsers.parse(T, str) to convert values to a more specific type if needed
источник