2012年7月10日火曜日

ruby でテキストファイルのバッチ処理

Ruby でバッチ処理する雛形を作成したので、メモとして載せます。おかしいところとか、こうした方が良いよ。というのがありましたら、コメントにでも書き込んでいただけると助かります。

私の作業では何らかのファイルを読んで抽出とか編集、マッチングなどをして、出力ファイル作成となる処理がほとんどです。雛形はファイルを1行ずつ読んで、1行ずつ出力して終わりのシンプルなものです。。
ファイルをまとめて読んで、処理してからまとめて出力なんて事もできますが、うちの環境では少なくて数万行、多くて数千万行のファイルを扱うので、まとめて処理するのは現実できでありません。1行ずつ処理していきますよ。

# encoding: Shift_JIS

print Time.now, " 処理開始\n"

=begin
ファイルオープン時の入力モード
r   : 読込み専用モード
r+  : 読込み/書き込み用
w   : 書き込み専用(ファイルが無ければ作成し、存在すればファイルをクリア。)
w+  : 読込み/書き込み用(その他は"w"と同様)
a   : 追加書きモード(ファイルが無ければファイルを作成する。)
a+  : 読込み/追加書きモード(ファイルが無ければファイルを作成する。)
    : 何も指定しなければ、"r"の読込み専用モード
=end

fr = open("read.txt")       # 入力ファイルオープン
fw = open("write.txt", "w") # 出力ファイルオープン
while line = fr.gets do     # 入力ファイルを1行ずつ読込
    
                            # 編集等何らかの処理
    
    fw.write(line)          # 出力ファイル書込
end
fr.close                    # 入力ファイルクローズ
fw.close                    # 出力ファイルクローズ

print Time.now, " 処理終了\n"

ruby のコードは読みやすい気がします。

0 件のコメント :

コメントを投稿