2012-02-15 65 views
0

我试图将一个twitter用户的xml提要保存到一个文件,然后尝试再次阅读它解析到屏幕上。写入文件,然后试图再次打开它的解析

这就是我看到的母鸡我尝试运行它..

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"] 

回答

3

要调用readlocal_file,这是包含字符串文件名。我打算用my_local_file.read来使用从open得到的IO对象。 (...或File.read local_file。)

不是说这是最好的形式:你为什么要写一个临时文件?你有内存中的数据,所以直接传递它。

如果你想写入本地文件,我赞扬块从公开的:

open(local_file, 'w') do |fh| 
    fh.print ... 
end 

这样红宝石将关闭该文件为你和所有的照顾。

相关问题