如何批量、快速在打开的文件的每一行行未添加数据
本帖最后由 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个小时。 本帖最后由 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豪秒。试试你的电脑情况如何? 1191ms..你的机子什么配置,速度这么快。
测试了一下,是在行末添加一段字符。但是我想要的换行符之前,否则就变成了隔一行添加了 2#第7行改为 $str &= "092501,16.95,B,3975" & @CRLF 速度上几个级别
第17行改为 Local $nstr = StringRegExpReplace($str, "(\V+)", '\1,"ABC123456"')行末换行前插入 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 , 几千个这样的文件处理还是挺费时的 回复 2# shqf
编译完运行,速度会快一些,8万行左右,也要200ms,
不编译要1000-2000MS,
机器配置也不算太差,怎么差这么多? 4#:第7行如此一改,生成8万行的文件几乎瞬间完成,真是快了几个级别,学习了,谢谢超版。
6#:8万行文件,行末添加,未编译140ms左右,编译后94ms左右。我机CPU :Intel Core i5-3230M,内存4G,64位系统。如此几千个文件最快10秒左右可完成了。 快了几个级别,学习了 50万行的文件,添加完成我的机子约90豪秒。试试你的电脑情况如何?
shqf 发表于 2015-4-7 22:33 http://www.autoitx.com/images/common/back.gif
?我的要72.2101 ,貌似等了这么久应该是秒吧
50万行的文件,添加完成我的机子约90豪秒。试试你的电脑情况如何?
shqf 发表于 2015-4-7 22:33 http://www.autoitx.com/images/common/back.gif
我相信了,你的确实只要90毫秒,不过这有点慢了
#cs
#ce 4#:第7行如此一改,生成8万行的文件几乎瞬间完成,真是快了几个级别,学习了,谢谢超版。
6#:8万行文件, ...
shqf 发表于 2015-4-8 20:40 http://www.autoitx.com/images/common/back.gif
真的快很多,同时学习了你的代码。谢谢,刚开始没理解。
页:
[1]