top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_598

Ruby:◇ファイル操作:ファイル入力 ・・・ 【Ruby:22歩目】

 2009-01-07
第22歩
 ◇ファイル操作:ファイル入力

  ※久しぶりの Ruby学習。
   しかしなんとものんびりしたスピード。1年かかりそうだな、本1冊。
   ・(前回はこちら

  (やっとこさ、)今回から「ファイル操作」に入る。楽しみではある・・・

  追記に ▼

※この連載は、はじめて「Ruby」に取り組んだmetaboyが、
 PHPなどとの違いを考慮しつつ、ゆっくりと
 良書「はじめてのRubyプログラミング」を基に
 学んでゆく、詳細な記録です。
                      (本日の参照:208頁


FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ


more  ◇ファイル操作:ファイル入力
  【ミッション】
 ●ファイルの入力 テキストファイルの読込


 ◆テキストファイルの読込
  ※テキストファイルの読込
   Hello World! はつまらないので
   Change The World と書いたテキストファイルを用意。
   (あんま、関係ないけど)change.txt

text = File.read('change.txt')
puts text #=> Change The World
 >>確認した

 ・File クラス の
  read メソッド を利用しているわけだ。
  これは、テキストファイルの全体を
  ・そのまま 読み込む。

 では、行ごとに読み込むには?
 (実際はこれが一番多い利用ケース となるだろう)

 ※テキストファイルに、Change The Worldの歌詞を
  書いておいて
If I can reach the stars,
Pull one down for you,
Shine it on my heart
So you could see the truth:

That this love I have inside
Is everything it seems.
But for now I find
It's only in my dreams.

And I can change the world,
I will be the sunlight in your universe.
You would think my love was really something good,
Baby if I could change the world.


lines = File.readlines('change.txt')
lines.each_with_index do |line,i|
print "#{i + 1}: #{line}"
end

 結果は
1: If I can reach the stars,
2: Pull one down for you,
3: Shine it on my heart
4: So you could see the truth:
5:
6: That this love I have inside
7: Is everything it seems.
8: But for now I find
9: It's only in my dreams.
10:
11: And I can change the world,
12: I will be the sunlight in your universe.
13: You would think my love was really something good,
14: Baby if I could change the world.
 >>確認した
 こうなる。

 ・File クラス の
  readlines メソッド
  これが、1行ごとの読込をしてくれる

 ・lines は、配列変数で、
  each_with_index でループさせているわけだ。

 ◆ディレクトリ付きのパス
  ※change.txtは、ソースファイルと同じところにおいたが
   当然実際の利用では、場所を指定することが
   多くなるはずだ。
   ・change.txt を datas というフォルダに
    入れた場合は、
lines = File.readlines('datas/change.txt')

 となる >>理解

 ◆ファイルが無いときは?
  ※該当するファイルが存在しないとき
   パスが違っている場合のエラーは
20090107.rb:8:in `read': No such file or directory - change_no.txt (Errno::ENOENT)
from 20090107.rb:8

 こんな感じ。

 エラートラップはこのように行う。
text = ''
fname = 'data/change.txt'
begin
text = File.read(fname)
rescue
puts "ファイル:<#{fname}>の読込に失敗!"
end
 >>確認した

 ※ rescue ってのがいいな。

+++++++++++++
PHPだと?
+++++++++++++
 ・まずファイルの読込は
$tar_file = "datas/change.txt";
$fp_in = fopen($tar_file,'r');
if (!$fp_in) {
}else{
# 処理
}


 ・読み込んでおいて行ごとに
$tempKugiri="\t";
while ($data = fgetcsv ($fp_in, 9999, $tempKugiri)) {
$allcnt_data=count($data);
}

ってやることが多い。

 ・ファイル有無はこれら実行する前に
if(file_exists($tar_file)){}

で調べることが多いな。

なんか、Ruby って
・シンプルでスマート って感じだなぁ。

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/598-f2a65f61
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。