我编写了一个简单的脚本,它应该读取整个目录,然后通过删除
HTML标记将
HTML数据解析为普通脚本,然后将其写入一个文件.
我有8GB内存和大量可用的虚拟内存.当我这样做时,我有超过5GB的RAM可用.目录中最大的文件是3.8 GB.
脚本是
file_count = 1 File.open("allscraped.txt",'w') do |out1| for file_name in Dir["allParts/*.dat"] do puts "#{file_name}#:#{file_count}" file_count +=1 File.open(file_name,"r") do |file| source = "" tmp_src = "" counter = 0 file.each_line do |line| scraped_content = line.gsub(/<.*?\/?>/,'') tmp_src << scraped_content if (counter % 10000) == 0 tmp_src = tmp_src.gsub( /\s{2,}/,"\n" ) source << tmp_src tmp_src = "" counter = 0 end counter += 1 end source << tmp_src.gsub( /\s{2,"\n" ) out1.write(source) break end end end
realscraper.rb:33:in `block (4 levels) in <main>': Failed to allocate memory (No MemoryError) from realscraper.rb:27:in `each_line' from realscraper.rb:27:in `block (3 levels) in <main>' from realscraper.rb:23:in `open' from realscraper.rb:23:in `block (2 levels) in <main>' from realscraper.rb:13:in `each' from realscraper.rb:13:in `block in <main>' from realscraper.rb:12:in `open' from realscraper.rb:12:in `<main>'
第27行是file.each_line do | line |和33是源<< tmp_src.失败的文件是最大的文件(3.8 GB).这里有什么问题?即使我有足够的内存,为什么我会收到此错误?另外我该如何解决?
解决方法
原文地址:https://www.jb51.cc/ruby/265329.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。