このBlogは「侍り社」の日記のコメント頁です.トップ頁はこちら

open-uriを活用する

外付けHDDを付けたPCを休止状態にする→HDDを外す→別のPCにHDDを接続し,データを書き込む→元のPCにHDDを接続→休止状態を解除.これにより,外付けHDDのデータが大変な事になる事が確認出来ました.是非皆様も気を付けて頂けるようお願いします.既存のデータがあんなにガンガン消えて行くとはな・・・.

Rubyでネット上のファイルを取得するのは"open-uri"をrequireしてopen(URL)と言うメソッドを使ってイテレータに投入するだけの簡単なお仕事なのですが,ループ制御で大量のURLを処理しようとすると,一度でもURLを開くのに失敗するとそこでプログラムが終了してしまい,それを回避しようとしてTimeout関連のライブラリを調べてみたけど使い方が解らず,暫くURLに関する処理は諦めていました.しかし先日,試しに例外処理を使ってみたら普通に上手く動いてしまって驚きました.良く考えてみれば当たり前か・・・.

require 'open-uri'
for i1 in 1..10
r_url = "http://xxx/#{i1}.htm" # 1〜10.htmの10個のファイルを開く
begin # 例外処理判定の開始
open( r_url ){ |l1|
l1.each_line{ |s1|
(色々な処理)
}
rescue # この下がOpenに失敗した時の処理
puts "#{r_url} open error."
end
end

こんな感じで,beginとrescueとendで囲むだけで済みます.以前は例外処理とか言われても意味不明だったけど,こんなに便利とは.これで自動的に色々なサイトを巡回して色々取得する術を手に入れたので,転送量を無駄に増やしたりとかしないようなリテラシー的な事にもより注意を払おうと思います.