geoffleyland/lua-csv

Does reading form io.stdin work?

lateefj opened this issue · 9 comments

I am trying to read a csv file from stdin:

for fields in csv.open(io.stdin) do
   for i, v in ipairs(fields) do print(i, v) end
end

I keep getting this error:

lua: /home/lhj/local/share/lua/5.2/csv.lua:340: bad argument #1 to 'open' (string expected, got userdata)
stack traceback:
        [C]: in function 'open'
        /home/lhj/local/share/lua/5.2/csv.lua:340: in function 'open'
        user_comment_size/lua/comment_count.lua:6: in main chunk
        [C]: in ?

Would love any feedback?

Try csv.use(io.stdin) or maybe just csv.use(), I think?

Both seem to give me this error (lua 5.2 and luajit):

lua: user_comment_size/lua/comment_count.lua:6: attempt to call a table value
stack traceback:
        user_comment_size/lua/comment_count.lua:6: in main chunk
        [C]: in ?

You're forgetting a :lines()

local csv = require("csv")

local count = 0
local size = 0

for fields in csv.use(io.stdin:lines()) do 
--for line in io.stdin:lines() do
  for i, v in ipairs(fields) do 
    size = size + 1
    print(i, v) 
  end
  count = count + 1
  --io.write("count " , count, " size ", size, "\r")
end
io.write("count " , count, " size ", size, "\n")

Try

for fields in csv.use(io.stdin):lines() do 

Error:

lua: user_comment_size/lua/comment_count.lua:6: /usr/local/share/lua/5.2/csv.lua:150: attempt to index local 'parameters' (a nil value)
stack traceback:
        [C]: in function 'for iterator'
        user_comment_size/lua/comment_count.lua:6: in main chun

Worked like this:

for fields in csv.use(io.stdin, {}):lines() do  

Thanks a lot!

Weird, you shouldn't need to do that, and you shouldn't have got an error at line 150. This line is there so that parameters is optional. Oh well...