#12 Rubyで学ぶファイル読み書きの基本
Rubyのファイル操作は、Pythonと同じくらい手軽に書けるのが特徴です。この記事では、Rubyにおけるファイル操作の基本を解説します。
ファイルを読み込む
content = File.read("data.txt")
puts content
ファイルに書き込む
File.write("data.txt", "こんにちは")
`File.write`は、指定したファイルが既に存在する場合、内容をすべて上書きする点に注意しましょう。既存の内容を残したまま追記したい場合は、後述の`File.open`をモード`"a"`で使います。
File.open("data.txt", "a") do |f|
f.puts "追加の行"
end
1行ずつ読み込む
File.foreach("data.txt") do |line|
puts line
end
ファイル全体を一度にメモリへ読み込む`File.read`と違い、`File.foreach`は1行ずつ処理するため、サイズの大きいファイルを扱う際にメモリの節約になります。
ブロックを使った安全な書き方
Pythonの`with`に似た、ブロックを使う書き方もあります。
File.open("data.txt", "r") do |f|
puts f.read
end
ブロックの終わりで、ファイルが自動的に閉じられます。ファイルを開くモードは`"r"`(読み込み)・`"w"`(書き込み、上書き)・`"a"`(追記)のように文字列で指定し、目的に応じて使い分けます。
ファイルの存在を確認する
存在しないファイルを読み込もうとすると`Errno::ENOENT`という例外が発生します。事前に存在を確認しておくと、想定外のエラーを防げます。
if File.exist?("data.txt")
puts File.read("data.txt")
else
puts "ファイルが見つかりません"
end
Rubyならではの注意点
`File.read`のような手軽な書き方は、ファイルを自動的に開いて閉じてくれるため、細かい処理をしない限りは特に意識する必要がありません。より細かい制御が必要な場合にだけ、`File.open`とブロックを組み合わせる、という使い分けを覚えておきましょう。また、`File.read`は改行コードを含めてそのまま読み込むため、Windows環境で作られたファイルを扱う際は改行コードの違い(`\r\n`と`\n`)によって、意図しない空行が出ることがある点も覚えておくとよいでしょう。
まとめ
Rubyのファイル操作は`File.read`・`File.write`が手軽で、`File.open`とブロックを使うとより丁寧な制御ができます。存在確認や追記モードも状況に応じて使い分けましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Rubyをもっと学びたい方には「プロを目指す人のためのRuby入門[改訂2版]」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿