我正在尝试将twitter用户的xml Feed保存到文件中,然后尝试再次读取它以便解析到屏幕上。
这就是我看到的母鸡,我试图运行它..
Wrote to file #<File:0x000001019257c8>
Now parsing user info..
twitter_stats.rb:20:in `<main>': undefined method `read' for "keva161.txt":String (NoMethodError)
这是我的代码......
require "open-uri"
require "rubygems"
require "crack"
twitter_url = "http://api.twitter.com/1/statuses/user_timeline.xml?cout=100&screen_name="
username = "keva161"
full_page = twitter_url + username
local_file = username + ".txt"
tweets = open(full_page).read
my_local_file = open(local_file, "w")
my_local_file.write(tweets)
puts "Wrote to file " + my_local_file.to_s
sleep(1)
puts "Now parsing user info.."
sleep(1)
parsed_xml = Crack::XML.parse(local_file.read)
tweets = parsed_xml["statuses"]
first_tweet = tweets[0]
user = first_tweets["user"]
puts user["screen_name"]
puts user ["name"]
puts users ["created_at"]
puts users ["statuses_count"]
答案 0 :(得分:3)
您正在read
上调用local_file
,这是包含文件名的字符串。您打算输入my_local_file.read
,我想,使用从open
获得的IO对象。 (...或File.read local_file
。)
这不是最好的形式:你为什么要写一个临时文件?你有内存中的数据,所以直接传递它。
如果你想写一个本地文件,我推荐来自open的块:
open(local_file, 'w') do |fh|
fh.print ...
end
这样Ruby就会为你和所有人关闭文件。