| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 151 人关注过本帖
标题:求助:一个CSV数据文件,在前面加10行,生成一个新的数据文件
只看楼主 收藏
rxliu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-9
结帖率:100%
  已结贴   问题点数:20  回复次数:5   
求助:一个CSV数据文件,在前面加10行,生成一个新的数据文件
数据文件的格式如下:

ate/Time    CH#0 (CH0) (掳C)    CH#1 (CH1) (掳C)    CH#2 (CH2) (掳C)    CH#3 (CH3) (掳C)    CH#4 (CH4) (掳C)    CH#5 (CH5) (掳C)    CH#6 (CH6) (掳C)
2017/11/1 10:22    19.84    19.27    19.11    19.82    17.91    19.17    18.81
2017/11/1 10:22    19.85    19.28    18.88    19.71    17.77    19.25    18.57
2017/11/1 10:22    19.85    19.34    18.85    19.19    18.21    19.38    18.82
2017/11/1 10:23    19.86    19.47    18.58    18.4    17.63    19.04    18.67
2017/11/1 10:23    19.86    19.66    18.96    18.8    17.88    19.42    18.89
2017/11/1 10:23    19.87    19.33    18.93    19.14    17.73    19.39    18.74
2017/11/1 10:23    19.87    19.24    18.78    18.78    17.88    19.21    19.02
2017/11/1 10:23    19.87    19.3    18.75    18.9    17.95    19.15    19.06
2017/11/1 10:23    19.88    19    18.91    19.15    17.86    19.43    18.63
2017/11/1 10:23    19.88    18.91    18.7    18.76    17.87    18.91    18.63
2017/11/1 10:24    19.88    18.94    19.13    19.22    17.62    19.03    18.85
2017/11/1 10:24    19.88    19.5    19.16    19.5    21.22    19.31    20.42
2017/11/1 10:24    19.88    19.5    19.84    19.81    20.85    19.93    21.19
2017/11/1 10:24    19.89    19.29    19.35    19.29    19.84    19.35    20.33
2017/11/1 10:24    19.89    19.69    19.63    19.66    20.09    19.78    19.81
2017/11/1 10:24    19.89    19.63    20.21    19.81    19.44    19.6    19.72
2017/11/1 10:24    19.89    19.47    20.12    19.84    19.04    19.66    19.84
2017/11/1 10:24    19.89    19.72    19.97    20.06    19.01    20.03    19.81
2017/11/1 10:25    19.89    20.34    20.52    20.24    19.29    20.52    20.46
2017/11/1 10:25    19.89    20.61    20.74    20.49    19.6    20.64    20.46
2017/11/1 10:25    19.89    20.68    20.83    20.77    19.78    20.68    20.52
2017/11/1 10:25    19.89    20.74    20.71    20.74    19.81    20.83    20.83
2017/11/1 10:25    19.89    20.77    20.92    20.83    20.15    20.89    20.77
2017/11/1 10:25    19.89    20.92    21.1    20.95    19.84    21.07    21.04
2017/11/1 10:25    19.89    21.04    21.38    20.86    19.97    21.17    21.04



把第一行去掉,前面11行变成:

E:SMT.TRW                           
Logger Serial Number 1                        
Backup time:     2017/11/1 10:52                        
Start time :     2017/11/1 10:22                    
End time   :     2017/11/1 10:52                        
Number of Readings:     676                        
Sample Rate :       8 seconds    :                    
Title :      1                        
Date     Int Temp     Thermo1     Thermo2     Thermo3     Thermo4     Thermo5     Thermo6
      C             C             C             C             C             C             C        
2017/11/1 10:22    19.84    19.27    19.11    19.82    17.91    19.17    18.81
2017/11/1 10:22    19.85    19.28    18.88    19.71    17.77    19.25    18.57
2017/11/1 10:22    19.85    19.34    18.85    19.19    18.21    19.38    18.82
2017/11/1 10:23    19.86    19.47    18.58    18.4    17.63    19.04    18.67
2017/11/1 10:23    19.86    19.66    18.96    18.8    17.88    19.42    18.89
2017/11/1 10:23    19.87    19.33    18.93    19.14    17.73    19.39    18.74
2017/11/1 10:23    19.87    19.24    18.78    18.78    17.88    19.21    19.02
2017/11/1 10:23    19.87    19.3    18.75    18.9    17.95    19.15    19.06
2017/11/1 10:23    19.88    19    18.91    19.15    17.86    19.43    18.63
2017/11/1 10:23    19.88    18.91    18.7    18.76    17.87    18.91    18.63
2017/11/1 10:24    19.88    18.94    19.13    19.22    17.62    19.03    18.85
2017/11/1 10:24    19.88    19.5    19.16    19.5    21.22    19.31    20.42
2017/11/1 10:24    19.88    19.5    19.84    19.81    20.85    19.93    21.19
2017/11/1 10:24    19.89    19.29    19.35    19.29    19.84    19.35    20.33
2017/11/1 10:24    19.89    19.69    19.63    19.66    20.09    19.78    19.81
2017/11/1 10:24    19.89    19.63    20.21    19.81    19.44    19.6    19.72
2017/11/1 10:24    19.89    19.47    20.12    19.84    19.04    19.66    19.84
2017/11/1 10:24    19.89    19.72    19.97    20.06    19.01    20.03    19.81
2017/11/1 10:25    19.89    20.34    20.52    20.24    19.29    20.52    20.46
2017/11/1 10:25    19.89    20.61    20.74    20.49    19.6    20.64    20.46
2017/11/1 10:25    19.89    20.68    20.83    20.77    19.78    20.68    20.52
2017/11/1 10:25    19.89    20.74    20.71    20.74    19.81    20.83    20.83
2017/11/1 10:25    19.89    20.77    20.92    20.83    20.15    20.89    20.77
2017/11/1 10:25    19.89    20.92    21.1    20.95    19.84    21.07    21.04
2017/11/1 10:25    19.89    21.04    21.38    20.86    19.97    21.17    21.04


其中:数据可能是三列到八列

E:SMT.TRW                           
Logger Serial Number 1                        
Backup time:     2017/11/1 10:52    》》》》》数据的结束时间                    
Start time :     2017/11/1 10:22    》》》》》数据的开始时间               
End time   :     2017/11/1 10:52    》》》》》书记的结束时间                    
Number of Readings:     676    》》》》》总的数据行数                    
Sample Rate :       8 seconds    》》》》》数据的时间间隔,按秒计算                    
Title :      1                        
Date     Int Temp     Thermo1     Thermo2     Thermo3     Thermo4     Thermo5     Thermo6
      C             C             C             C             C             C   
2017-11-09 18:38
rxliu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-9
  得分:0 
日期和时刻,在一个单元格内
2017-11-09 18:39
rxliu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-9
  得分:0 
816 0 3721
2017-11-09 18:43
xiangyue0510
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:76
帖 子:819
专家分:4823
注 册:2015-8-10
  得分:7 
CSV文件我记得是可以用excel打开的,自己看一下VB调用Excel或VBA的例子就可以实现了
2017-11-10 10:45
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:186
帖 子:4059
专家分:25013
注 册:2008-10-15
  得分:7 
你这个 CSV ,按文本格式文件处理

如果编辑,那就使用 EXCEL 打开 。
编程转变的思路,读文件,一行一行的读,然后一行一行的写

打开文件
读一行,此行是需要删除的内容,所以不保存      
do
读一行
按长度取字符串,为日期+时间,保存到 日期变量里,
比较,并保存最小时间和最大时间
统计行数
loop  文件结束退出循环
关闭文件

重新打开文件
打开新文件,使用 TMP 命名
组合生成 前面6行 ,只有6行吗? 按你的例子是 9 行,包括数据的标头
写入前面6行
读一行
do
读一行
写一行
loop 当读到文件结束结束
关闭二个文件
把TMP文件改名为目标文件

流程就是这种的。这种是针对内存紧张,或者文件有可能超大的稳妥处理办法,使用2次IO代替临时数据放内存。

--------------------
如果优化执行速度,那就第一次读时,就一次性读入内存,保存到数组里。后面的访问老文件均读数组内容。
然后去分析时间,得到关键值
然后再用数组里的数据去保存到新文件中。
保存时,都是建议使用临时文件的方式进行保存。防止生成新文件过程时中断,造成生成的文件未能结束,而又不知道。
最大需要占用 文件大小*2倍 + 文件行数*20 字节 的内存。
假如文件大小为1G,10W行,那最大时,需要占用 2G+1.9M 的内存。


授人于鱼,不如授人于渔
早已停用QQ了
2017-11-10 12:46
rxliu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-9
  得分:0 
哪位朋友可以做? 联系我
2017-11-12 19:00







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067099 second(s), 8 queries.
Copyright©2004-2017, BCCN.NET, All Rights Reserved