Pythonのwith文で複数ファイルを一度に開く

概要

Pythonでファイルのopenなどに使うwith文は、カンマで区切って複数のファイルを一度に開くことができます。(python3.1以降)
その場合、複数の with 文がネストされたかのように扱われます。
複数csvファイルのマージなどに役立ちます。

サンプルコード(python3.6.9で確認)

2021-01-22: @shiracamus さんのコメントを反映しました。ありがとうございます。

import csv

with open("input1.csv", mode='r') as fi1, \
     open("input2.csv", mode='r') as fi2, \
     open("output.csv", mode='w') as fo:
    reader1 = csv.reader(fi1)
    reader2 = csv.reader(fi2)
    writer = csv.writer(fo)

    for l1, l2 in zip(reader1, reader2):
        writer.writerow(l1 + l2)

入力ファイル

input1.csv

a,b,c
1,2,3

input2.csv

d,e,f
4,5,6

出力結果

output.csv

a,b,c,d,e,f
1,2,3,4,5,6

公式ドキュメント

8. 複合文 (compound statement)「8.5. with 文」

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です