怎么自动下载多个文件?

怎么自动下载多个文件?
这是我遇到的第一个问题。当数据量很大时一般都会分成很多个文件存放。这时下载文件比较麻烦。A用Wget命令。Windows下花费一点时间去下载安装。但之于手动下载能省不少时间。我提供两种方式方式下载文件a用Wget的递归下载选项 “-r”。一般命令如下wget –r http://下载数据的根目录/ -o 下载记录文件名 -np因为递归下载没法控制进度所以建议不一要次递归下载太多的文件b用BatWget多次执行Wget。一般命令如下wget –r http://下载数据的根目录分支1/ -o 下载记录文件名 -npwget –r http://下载数据的根目录分支2/ -o 下载记录文件名 -npwget –r http://下载数据的根目录分支3/ -o 下载记录文件名 -np…… ……wget –r http://下载数据的根目录分支N/ -o 下载记录文件名 -np用Bat可以降低出错带来的影响。另外Wget可以通过 –A 选项来指定希望下载的文件的后辍通过 –P 选项来指定下载文件存放路径。更多命令参见wget -hQ这速度。。。什么时候才能下完网速永远是个瓶颈A如果下载服务很远的话你应该考虑代理。wget设置代理的方式如下set http_proxyhttp://代理服务器不要忘了多开几个进程20个试试打开文件Q怎么打开文本文件这不是弱智问题。你用记事本打开一个1000MB的文件试试ALTF viewerLarge Text File viewer, 打开速度会让你惊奇Q怎么打开二进制文件AHex Editor Neo你可以通过下面方式来选择进制右击数据区 Display As Hex|Decimal|Octal|Binary|Float|Double你可以通过下面方式来选择按多少字节显示右击数据区 Group By Bytes|Words|Double|Quad编程语言当数据量很大时选择语言要慎重了。因为不同语言有不同的特点你要在编程时间和运行时间之间权衡。模型测试开始时一般挑几个小的数据进行测试获取第一份分析结果。这时当然希望能快速编程实现。脚本语言是一个很好的选择比如Python。大量处理开始遍历处理所有数据时用脚本语言来处理就不太合适了。因为脚本语言的运行时间不能让人接受。另外还有内存使用文件读写这些你都没法控制。不幸的是很少语言会为你处理海量文件做优化。这时C/C是最好的选择。结果展示漫长的等待终于过去了眼看就要出结果了。如果你还执着于陪伴你度过漫长等待的C/C的话你迟早会沮丧的。我尝试了很多方式之后得出的结论是让Matlab来接手C/C。Matlab能轻而易举地展示大量数据。更重要的是Matlab支持读取二进制文件。filename out.bin; % binary filefid fopen( filename );data fread( fid, itemsNumber, *uint32);fclose(fid);算法一次性读文件我已经测试过好几次了一次性读取文件比一行一行读文件至少快五倍记住O(N)这时你要好好考虑算法的复杂度了。任何ON2)的算法都不可取。必要的时候可以通过空间来换时间。通常哈希表能节省不少时间。并行处理温习一下并行算法。这比等待单线程程序好很多。可以考虑在GPU上跑程序。当然内存和文件读取时间更可能是瓶颈。内存、CPU、磁盘读取速度谁是瓶颈任务管理器知道。优化核心代码通常80%的时间在运行20%的代码。所以有空的话优化下经常经常执行的代码。分布式保存把分析结果存在一个文件中是一个很糟糕的决定。这会为后面处理带来很多麻烦。比如并行处理文件过大等。二进制方式保存中间数据二进制方式存放通常能省一半的磁盘空间。这同时意味着减少一半的写硬盘时间和读硬盘时间。当然还有文本转换时间。还有个重要细节要注意在Windows中读写文件的方式要改成”rb”和”wb”。要不然莫名的Bug迟早要发生但不一定能找到。运行Debug Vs Release别忘了最终运行时把编译方式换成Release。但是刚改完程序的话建议先用Debug模式试跑一下。这样能定位运行时异常。批处理批处理是降低运行出错风险的很好的方式。因为你不确定程序能正常结束。所以一段一段执行程序是一个很好的选择。如果某个地方出问题的话就不用重新运行前面的程序了。断言当数据量很大时很难保证输入是合法的。另一种情况是数据是合法的但我们欠考虑了。这时断言就显得很重要了。断言回增加运行时间但总比花大量时间得到一个错误结果好。记录运行结果到文件前面提到数据量很大时很难保证程序正常结束。一般很少人会在显示器旁坐等输出结果。把运行情况定时记录到文件是非常必要的。另外不要忘了fclose();附64位编程问题数据量很大时内存通常是不够用的。有一个常识必须知道32位程序的最大寻址空间是2GB。如果你要分配接近或者超过2G内存的话试试64位程序吧。当然有两条件64位的CPU64位的操作系统。下面是编写64位程序的一些经验编译环境如果是解释型语言比如Python则需要下载一个64位的Python解释器如果是编译型语言比如C/C则需要选择恰当的编译平台。比如VS2008中项目属性 Configuration Manager Platform New X64内存分配大数组应该用malloc而不是直接定义数组。sizeof( int ) ! sizeof( size_t )64位程序中数组下标应该换成size_t常数也需要强制转换比如 4GB 4*size_t)1000000000000文件fwrite一次性写入一个大于4GB的数组似乎有些问题。分多次写入文件试试。就写到这了很晚了。。。欢迎各种补充我会不断更新这篇文章觉得有用的话速度分享链接有不同意见的话果断拍砖精彩评论#8楼2010-12-03 09:03 | LeftNotEasy这个得顶感谢楼主的分享我也是常常做海量数据的分析不过一般是在分布式系统上。楼主怎么会用windows来做海量数据的分析呢。在单机上跑海量数据的处理特别是训练模型之类的一般很难实现的很多训练模型的算法都要求数据能够在内存中保存。在分布式的环境下用python是可行的毕竟python的开发时间短而且运行时间不比c慢多少倍#10楼2010-12-03 09:09 | 木鱼引用BAsil不错问个问题32位程序的最大寻址空间为什么是2GB而不是4GB呢2的32次方32位系统寻址最大是4GB,因为硬件映射等造成的内存3.3G以上无法被系统使用,因此最大可使用内存在3.3G,而操作系统是个多任务的系统,需要保留自己的内存空间并对每个程序运行的空间进行限制,在32位系统上这个限制是2GB.即使通过PAE在32位系统上支持超过4GB的内存,这个2GB的限制还是存在的.