Python スクリプトを改修する 2 (ファイル読み書き)

仕事で使用しているスクリプトで、テキストファイルを読み込んで文中の URL を a タグで囲んで HTML ファイルに書き出すものがあります。

pandoc か何かを使えばより高い次元で実現することができるような気もしますが、必要なのは URL の処理くらいであとはテキストそのままの体裁で十分なこともあり、自作スクリプトで対応しています。

書いたのはもう 2 年くらい前で、その後私自身の Python に対する理解も(わずかずつとはいえ)深まってきたようで、読み返すといくつか書き直したい部分が出てきました。

そのうちの一つがファイルの読み書きの部分でこれまでは

f = open('hoge.txt', 'r')
for line in f:
    rawtext = line.rstrip(os.linesep)
    print(rawtext)
f.close()

という感じで書いていたのですが、「パーフェクト Python」や「Dive into Python 3」を読んでいて with 文を使って書いた方がよいということを知ったので書き直しました。今はだいたい下記のような感じになっています。(部分的に抜粋)

# ファイル IGlist.html に書き込み
with open(dst_full_path, mode='w', encoding='utf-8') as dst_file:
    dst_file.write(header)
    # dst_file.write(time_difference)
    dst_file.write(weather_forecast)
    dst_file.write(stock_price)
    dst_file.write(revenue)
    # ファイル IGlist.txt から読み出し
    with open(src_full_path, mode='r', encoding='cp932') as src_file:
        for line in src_file:
            rawtext = line.rstrip(os.linesep)
            rawtext = pattern.sub(replace_str, rawtext)
            dst_file.write(rawtext + "\n")
    dst_file.write(footer)

with だと何かイレギュラーが発生したとしても Python の方でファイルを閉じてくれるのでより安全な書き方といえるそうです。