user11 发表于 2012-8-28 15:10:11

[已解决]如何提高Filewritline效率

本帖最后由 user11 于 2012-8-29 19:41 编辑

想自己写一个手机号码生成工具,可以生成一个城市的所有手机号码,

首先从网站读取该城市的所有号码段到一个文本里面,然后再号码段(前7位)后面补足4位就可以变成 11位的手机号码

补足11位号码以后,使用Filewriteline写入到新的文件里面,,可是Filewriteline的速度实在太慢了,求助各位高手,,如何提高效率加快速度,非常感谢!!

主要的代码如下,,每个城市的号码段数码不同,有的非常多例如北京上海,一行一个号码段前七位,我从下面网站抓的

http://www.aiqzu.net/city/beijing/beijing.php



$sjfile = FileOpen($file, 0);;$file为已经读取的号码段文件
If $sjfile = -1 Then
    MsgBox(0, "错误", "号码段文件不能打开.")
Else
               
$zdfile = FileOpen("_11位手机号码.txt", 10)

   For $r=1 To $i Step 1    ;;;$i前面已经读取文本的最大行数
        If $zdfile = -1 Then ExitLoop
        $zdline = FileReadLine($sjfile,$r)
        If @error = -1 Then ExitLoop

   For $j=0 To 9999 Step 1
                If StringLen(String($j))<4 Then
                $4nums=StringRight("00000000",4-StringLen(String($j)))&String($j) ;;补足四位号码,方法比较笨汗       
                Else
                $4nums=String($j)
                EndIf
        FileWriteLine($zdfile,$zdline&$4nums)
    Next
Next
MsgBox(0,"恭喜任务完成","共计生成"&($r-1)*10000&"个,11位手机号码!")       
EndIf

annybaby 发表于 2012-8-28 16:18:14

手机看帖,不方便,你可以先将生成的数据写到变量里,完成后再一起写到文件

user3000 发表于 2012-8-28 20:56:17

2楼思路对头, $zdline = FileReadLine($sjfile,$r) 改成 $data &= $r & @CRLF
$data 变量获取所有或一定行数据后, 再写入文件

gto250 发表于 2012-8-28 21:18:29

本帖最后由 gto250 于 2012-8-28 22:12 编辑

#Include <File.au3>
$t=TimerInit()
Dim $str,$aArray
For $i=0 To 9999
        $str&="*"&StringFormat("%04d\n",$i)
Next

_FileReadToArray(@ScriptDir&"\号码.txt",$aArray)

$f=FileOpen(@ScriptDir&"\11位号码.txt",10)
For $i= 1 To $aArray
FileWrite($f,StringReplace($str,"*",$aArray[$i]))
Next
$l=TimerDiff($t)
MsgBox(0,"","已经完成,用时"&Int($l/1000)&"秒,一共"&$aArray*10000&"个号码")

号码.txt里的内容,如下,联通的317个号码
1300000
1300010
1300011
1300045
1300046
1300047
1300048
1300049
1300100
1300101
1300102
1300103
1300104
1300105
1300106
1300107
1300108
1300109
1300110
1300111
1300112
1300113
1300114

在我的电脑上,一共317行的7位号码,生成3170000个号码,一共4秒!
想要更快的方法,可能就要P版的内嵌汇编了,不过那个我不会!

user11 发表于 2012-8-29 19:41:05

回复 4# gto250

非常感谢,,解决了。。学到不少东西!!{:face (125):}
页: [1]
查看完整版本: [已解决]如何提高Filewritline效率