加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 计算CSV文件的长度(行数)?

发布时间:2020-12-16 20:13:07 所属栏目:百科 来源:网络整理
导读:我有一个表单(Rails),它允许我使用file_field加载.csv文件. 在视图中: % form_for(:upcsv,:html = {:multipart = true}) do |f| % table tr td%= f.label("File:") %/td td%= f.file_field(:filename) %/td /tr /table %= f.submit("Submit") % % end % 点
我有一个表单(Rails),它允许我使用file_field加载.csv文件.
在视图中:
<% form_for(:upcsv,:html => {:multipart => true}) do |f| %>
    <table>
        <tr>
            <td><%= f.label("File:") %></td>
            <td><%= f.file_field(:filename) %></td>
        </tr>
    </table>
        <%= f.submit("Submit") %>
    <% end %>

点击提交将我重定向到另一个页面(create.html.erb).该文件加载正常,我能够读取的内容,在这第二页.我试图在第二页显示.csv文件中的行数.

我的控制器(半伪代码):

class UpcsvController < ApplicationController
    def index
    end

    def create
        file = params[:upcsv][:filename]
        ...
        #params[:upcsv][:file_length] = file.length # Show number of lines in the file
        #params[:upcsv][:file_length] = file.size
        ...
    end
end

当我的文件只包含7行时,file.length和file.size都会返回’91’.从我阅读的Rails文档中,一旦点击Submit按钮,Rails创建一个上传文件的临时文件,params [:upcsv] [:filename]包含temp / uploaded文件的内容,而不是文件.而且我不知道如何提取原始文件中的行数.获取文件中行数的正确方法是什么?

我的create.html.erb:

<table>
    <tr>
        <td>File length:</td>
        <td><%= params[:upcsv][:file_length] %></td>
    </tr>
</table>

我在Rails真的很新(上周刚刚开始),所以请忍受我的愚蠢的问题.

谢谢!

更新:显然,我的文件中的’91’是个人字符(包括回车)的数量.我的文件中的每一行都有12位数字1换行= 13. 91/13 = 7.

解决方法

另一种读取行数的方式是
file.readlines.size

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读