ファイルを読み込み、ファイルを新規作成し書き込む

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

とあるデータファイルを読み込んで、別にファイルを開いて(新規作成して)、読み込んだデータを書き込む、というスクリプトを書いてみます。
まずは、データファイル。

スポンサーリンク

number.dat

3,6,455,64
23,67,10,2925,
53,67,487
30,57,
12,65,89,3432,456

number.datは、カンマで区切られた数字が、複数行に渡って、だーっと書かれているファイルです。
このファイルのデータを読み込み、1行ずつの合計値、およびすべての合計を、コンソール(画面上)出力、およびファイルに書き出しを行います。

file = File.open("number.dat", "r")
 
output = ""            # 出力する文字列
all_total = 0        # すべての合計
one_results = []    # 1行の合計値の配列
while line = file.gets
    num_datas = line.chomp.split(/,/)
    p num_datas        # 1行ずつ確認(ファイルには書き出さない)
    
    # 1行ごとの合計
    one_total = 0
    num_datas.each{|i|
        output << i
        one_total += i.to_i
        if i == num_datas.last
            next
        end
        output << " + "
    }
    all_total += one_total
    output << " = #{one_total}\n"
    one_results.push(one_total)
end
output << "all total:\n"
output << one_results.join(' + ') << ' = ' << all_total.to_s
puts output        # コンソールに出力
file.close        # ファイルクローズ
 
# ファイルに書き出し
output_file = File.open("output_number.dat", "w")    # 書き込み専用でファイルを開く(新規作成)
output_file.write(output)    # ファイルにデータ書き込み
output_file.close        # ファイルクローズ
 

まずは、コンソール上(画面上)の出力結果。

["3", "6", "455", "64"]
["23", "67", "10", "2925"]
["53", "67", "487"]
["30", "57"]
["12", "65", "89", "3432", "456"]
3 + 6 + 455 + 64 = 528
23 + 67 + 10 + 2925 = 3025
53 + 67 + 487 = 607
30 + 57 = 87
12 + 65 + 89 + 3432 + 456 = 4054
all total:
528 + 3025 + 607 + 87 + 4054 = 8301

作成されたファイルに書き出された出力結果。

output_number.dat

3 + 6 + 455 + 64 = 528
23 + 67 + 10 + 2925 = 3025
53 + 67 + 487 = 607
30 + 57 = 87
12 + 65 + 89 + 3432 + 456 = 4054
all total:
528 + 3025 + 607 + 87 + 4054 = 8301

と、なります。

スポンサーリンク
 
スポンサーリンク