找回密码
 加入
搜索
查看: 3306|回复: 4

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

[复制链接]
发表于 2012-8-28 15:10:11 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2012-8-28 16:18:14 | 显示全部楼层
手机看帖,不方便,你可以先将生成的数据写到变量里,完成后再一起写到文件
发表于 2012-8-28 20:56:17 | 显示全部楼层
2楼思路对头, $zdline = FileReadLine($sjfile,$r) 改成 $data &= $r & @CRLF
$data 变量获取所有或一定行数据后, 再写入文件
发表于 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[0]
FileWrite($f,StringReplace($str,"*",$aArray[$i]))
Next
$l=TimerDiff($t)
MsgBox(0,"","已经完成,用时"&Int($l/1000)&"秒,一共"&$aArray[0]*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版的内嵌汇编了,不过那个我不会!
 楼主| 发表于 2012-8-29 19:41:05 | 显示全部楼层
回复 4# gto250

非常感谢,,解决了。。学到不少东西!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-21 06:01 , Processed in 0.075816 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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