我试图从.CSV文件中读取并创建具有每行属性的对象。 我的代码运行正常:
def self.load_csv
puts "Name of a file?"
filename = STDIN.gets.chomp
rows = []
text = File.read(filename).gsub(/\\"/,'""')
CSV.parse(text, headers: true, header_converters: :symbol) do |row|
row = row.to_h
row = row.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
rows << row
end
rows.map do |row|
Call.new(row)
end
end
end
现在我想从STDIN获取文件名。我只是改变了:
def self.load_csv(filename)
rows = []
text = File.read(filename).gsub(/\\"/,'""')
CSV.parse(text, headers: true, header_converters: :symbol) do |row|
row = row.to_h
row = row.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
rows << row
end
rows.map do |row|
Call.new(row)
end
end
end
当我尝试ruby program.rb filename.csv我得到错误没有将String隐式转换为IO,并且在用File.read
删除行之后它什么也没做 - 就像无限循环一样?当然,我在代码的不同部分使用STDIN参数调用ceratain方法。我过去使用类似的代码从STDIN读取成功,这次我做错了什么?
答案 0 :(得分:0)
此代码正常运行:
error 400 Bad Request