海康/大华SDK协议EasyCVR如何通过Go语言读取csv文件内容?

wx6084d152d85c2 · · 1694 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

EasyCVR是TSINGSEE青犀视频开发的视频智能安防监控平台,支持通过调用API接口进行二次开发,同时也支持其他定制功能的开发。在EasyCVR的部分定制项目中,需要导入csv文件生成对应的录像上传计划,因此需要对csv文件的内容进行读取。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

一般csv文件和excel文件类似,不是一个个表格组成的数据。相对于excel文件来说,csv文件的格式更简单,只要每个数据以“,”分隔开,逗号前后的数据就是两个表格的数据。显示如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

实际Go语言对于csv文件一次性读取的代码文件为:

// 一次性读取所有的数据
func ReadCsvFileAll(fileName string) ([][]string, error) {
   //针对小文件,一次性读取所有的内容
   fs, err := os.Open(fileName)
   if err != nil {
      return nil, err
   }
   defer fs.Close()
   r1 := csv.NewReader(fs)
   return r1.ReadAll()
}

以上代码适合读取小的csv文件,对于有的csv文件甚至会达到数十万条数据,一次性读取全部,会导致内存空间大量占用,不适合一次性读取,因此就需要一行行的读取。代码如下:

// 读取 csv 文件的每一行
func ReadCsvLine(fileName string) {
   fs, err := os.Open(fileName)
   if err != nil {
      fmt.Println("readError ", err)
   }
   defer fs.Close()

   r := csv.NewReader(fs)
   //针对大文件,一行一行的读取文件
   for {
      row, err := r.Read()
      if err != nil && err != io.EOF {
         fmt.Println("readError ", err)
      }
      if err == io.EOF {
         break
      }
      fmt.Println(row)
   }

}

GO语言凭借其精简易学的特点一直是很多人的心头好,同时,Go语言中友好的工具链也让编程更加轻松。TSINGSEE青犀视频视频智能安防监控平台的开发中很多都用到了这种小巧精致的编程语言,如果大家对我们的编译或者对我们的平台感兴趣,欢迎联系我们。


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:wx6084d152d85c2

查看原文:海康/大华SDK协议EasyCVR如何通过Go语言读取csv文件内容?

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1694 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传