Ruby中的文件创建/循环问题

时间:2012-05-05 01:40:19

标签: ruby

编辑:我原来的问题已经过时了,道歉。马克里德帮我找出了真正的问题,所以就是这样。

请注意,此代码有效:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

source_url = "www.flickr.com"
puts "Visiting #{source_url}"
page = Nokogiri::HTML(open("http://website/script.php?value=#{source_url}"))
textarea = page.css('textarea') 


filename = source_url.to_s + ".txt"
create_file = File.open("#{filename}", 'w')
create_file.puts textarea
create_file.close

哪个真棒,但我需要它来实现~110个URL,而不仅仅是Flickr。这是我的循环不起作用:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

File.open('sources.txt').each_line do |source_url|
  puts "Visiting #{source_url}"
  page = Nokogiri::HTML(open("http://website/script.php?value=#{source_url}"))
  textarea = page.css('textarea') 

  filename = source_url.to_s + ".txt"
  create_file = File.open("#{filename}", 'w')
  create_file.puts "#{textarea}"
  create_file.close
end

我的循环错误是什么?

2 个答案:

答案 0 :(得分:1)

好的,现在你循环输入文件的行。当你这样做时,你会得到以newilne结尾的字符串。因此,您尝试在其名称中间创建一个带换行符的文件,这在Windows中是不合法的。

只需点击字符串:

File.open('sources.txt').each_line do |source_url|
  source_url.chomp!
  # ... rest of code goes here ...

您也可以使用File#foreach代替File#open.each_line

File.foreach('sources.txt') do |source_url|
  source_url.chomp!
  # ... rest of code goes here 

答案 1 :(得分:0)

你把括号放在错误的地方:

create_file = File.open(variable, 'w')