找回密码
 加入
搜索
查看: 4330|回复: 10

[系统综合] 如何批量、快速在打开的文件的每一行行未添加数据

  [复制链接]
发表于 2015-4-7 13:09:51 | 显示全部楼层 |阅读模式
本帖最后由 auto 于 2015-4-7 13:12 编辑

如何快速在文件的每一行行未添加数据
原始数据如下
092501,16.95,S,100
092501,16.95,S,325
092501,16.95,B,700
092501,16.95,B,3975
092501,16.95,B,2425
092501,16.95,B,1500
093002,16.94,S,500
093002,16.95,B,75
093002,16.95,B,2516



例如
092501,16.95,S,100,"ABC123456"
092501,16.95,S,325,"ABC123456"
全部在行尾增加,"ABC123456"

现在打开文件,使用FileReadLine($file)读取后添加,
发现处理一个文件要好几秒(每个文件都有几千到几万行不等),
全部文件好几千个,处理好的数据全部合并到一个新文件(超过1G),
全部处理完约1个小时。
发表于 2015-4-7 22:33:02 | 显示全部楼层
本帖最后由 shqf 于 2015-4-7 22:44 编辑
;生成一个5万行的文件=========================================
#cs
Local $str
Local $FileName = @ScriptDir & "\1.txt"
Local $hFileOpen = FileOpen($FileName, 10)
For $i = 1 To 50000
        $str = $str & "092501,16.95,B,3975" & @CRLF
Next
FileWrite($hFileOpen, $str)
FileClose($hFileOpen)
#ce

;行未添加数据================================================
Local $FileName = @ScriptDir & "\1.txt"
Local $hTimer=TimerInit()
Local $str = FileRead($FileName)
Local $nstr = StringRegExpReplace($str, "(.+)", '\1,"ABC123456"')
Local $hFileOpen = FileOpen($FileName, 10)
FileWrite($hFileOpen, $nstr)
FileClose($hFileOpen)
Local $iDiff = TimerDiff($hTimer)
MsgBox(0, "Time Difference", $iDiff)
50万行的文件,添加完成我的机子约90豪秒。试试你的电脑情况如何?
 楼主| 发表于 2015-4-8 09:19:34 | 显示全部楼层
1191ms..你的机子什么配置,速度这么快。
测试了一下,是在行末添加一段字符。但是我想要的换行符之前,否则就变成了隔一行添加了
发表于 2015-4-8 11:05:45 | 显示全部楼层
2#第7行改为 $str &= "092501,16.95,B,3975" & @CRLF 速度上几个级别
第17行改为 Local $nstr = StringRegExpReplace($str, "(\V+)", '\1,"ABC123456"')  行末换行前插入
 楼主| 发表于 2015-4-8 14:21:59 | 显示全部楼层
Local $FileName = @ScriptDir & "\AB600000.csv"
Local $hTimer=TimerInit()
Local $str = FileRead($FileName)
Local $nstr = StringRegExpReplace($str, "(\V+)", '\1,AB600000')
Local $hFileOpen = FileOpen($FileName, 10)
FileWrite($hFileOpen, $nstr)
FileClose($hFileOpen)
Local $iDiff = TimerDiff($hTimer)
MsgBox(0, "Time Difference", $iDiff)

这样倒是符名要求,不过一个文件处理(8万多行)还是需要2000ms , 几千个这样的文件处理还是挺费时的
 楼主| 发表于 2015-4-8 14:25:43 | 显示全部楼层
回复 2# shqf


    编译完运行,速度会快一些,8万行左右,也要200ms,
不编译要1000-2000MS,
机器配置也不算太差,怎么差这么多?
发表于 2015-4-8 20:40:56 | 显示全部楼层
4#:第7行如此一改,生成8万行的文件几乎瞬间完成,真是快了几个级别,学习了,谢谢超版。
6#:8万行文件,行末添加,未编译140ms左右,编译后94ms左右。我机CPU :Intel Core i5-3230M,内存4G,64位系统。如此几千个文件最快10秒左右可完成了。
发表于 2015-4-9 06:49:15 | 显示全部楼层
快了几个级别,学习了
发表于 2015-4-10 22:19:54 | 显示全部楼层
50万行的文件,添加完成我的机子约90豪秒。试试你的电脑情况如何?
shqf 发表于 2015-4-7 22:33



    ?我的要72.2101 ,貌似等了这么久应该是秒吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2015-4-10 22:21:37 | 显示全部楼层
50万行的文件,添加完成我的机子约90豪秒。试试你的电脑情况如何?
shqf 发表于 2015-4-7 22:33



    我相信了,你的确实只要90毫秒,不过这有点慢了
#cs
#ce
发表于 2015-4-11 00:13:10 | 显示全部楼层
4#:第7行如此一改,生成8万行的文件几乎瞬间完成,真是快了几个级别,学习了,谢谢超版。
6#:8万行文件, ...
shqf 发表于 2015-4-8 20:40



    真的快很多,同时学习了你的代码。谢谢,刚开始没理解。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-1 06:45 , Processed in 0.080523 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表