2012-02-15 4 views
0

TwitterユーザーのXMLフィードをファイルに保存してから、再度解析して画面に読み込もうとしています。ファイルに書き込んでから解析するためにもう一度開きます

これは、あなたが入った文字列であるlocal_filereadを、呼び出している...私はそれを実行しようとした鶏..

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

よファイル名。 openから取得したIOオブジェクトを使用する場合は、my_local_file.readと入力してください。 (...またはFile.read local_file

これは最良の形式ではありません。どうしてあなたは一時ファイルに書き込みますか?あなたはメモリ内のデータを持っているので、直接渡すだけです。

ローカルファイルへの書き込みをしたいならば、私は開いているのからブロックを称賛:

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

Rubyはあなたのためのファイルを閉じるの世話をし、すべてのことでしょうその方法。

関連する問題