Pythonで複数のファイルを1つの新しいファイルに連結・結合する方法
Pythonでは、複数のテキストファイルを1つの新しいファイルにまとめる(連結する)のはとても簡単です。基本的な考え方は、対象となるファイルを順番に読み込み、その内容を出力用ファイルへ書き込んでいくだけです。ここでは、代表的な2つの方法をわかりやすく解説します。
方法1:ファイル全体を読み込んで一括書き込みする
最もシンプルなのが、forループでファイル名のリストを処理し、with文でファイルを開いて内容を書き込む方法です。小〜中規模のファイルであれば、この方法で十分です。
サンプルコード
filenames = ['file1.txt', 'file2.txt', 'file3.txt']
with open('output_file', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
outfile.write(infile.read())
このコードでは、まず出力先の output_file を書き込みモード('w')で開きます。次に filenames のリストからファイル名を1つずつ取り出し、それぞれを読み込みモードで開いて内容をすべて出力ファイルに書き込んでいます。infile.read() がファイル全体を一度に読み込むため、コードが短く直感的なのが特徴です。
方法2:大きなファイルは行ごとに読み書きする
扱うファイルサイズが非常に大きい場合、read() による一括読み込みはメモリを大量に消費し、パフォーマンス低下やメモリ不足の原因になることがあります。そんなときは、1行ずつ読み込んで書き込む方法がおすすめです。
サンプルコード
filenames = ['file1.txt', 'file2.txt', 'file3.txt']
with open('output_file', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
for line in infile:
outfile.write(line)
この方法では、ファイルオブジェクトを直接イテレートすることで1行ずつ処理するため、巨大なファイルでもメモリ使用量を抑えられます。ログファイルなど大容量データの連結に適しています。
押さえておきたいポイント
- with文を使う: 処理終了後に自動的にファイルが閉じられるため、クローズ忘れによるトラブルを防げます。
- モードの使い分け:
'w'は既存内容を上書きします。既存ファイルに追記したい場合は'a'(追記モード)を使用しましょう。 - 文字エンコーディングの指定: 環境による文字化けを避けるため、
open(fname, encoding='utf-8')のように明示的に指定しておくと安全です。 - バイナリファイルの場合: 画像やPDFなどを連結するときは、モードに
'rb'/'wb'を指定してください。
状況に応じて「一括読み込み」と「行単位処理」を使い分けることで、どんなサイズのファイルでも効率よく連結できます。
-
C言語で2つのファイルの内容を3つ目のファイルに結合する方法
この記事では、C言語を使って2つのテキストファイルの内容を読み込み、それらを1つの3つ目のファイルに結合(マージ)するプログラムを紹介します。ファイル操作の基本である fopen、fgetc、fputc、fclose などの標準ライブラリ関数の使い方を学ぶのに最適な例題です。処理の概要まず、2つの元ファイル(java.txt と kotlin.txt)にそれぞれ初期内容を書き込みます。その後、両方のファイルを読み込みモードで開き、内容を順番に3つ目のファイル(ttpoint.txt)へ書き出すことで、ファイルを結合します。入力例java.txt の初期内容:「Java is a program
-
PythonでPDFファイルをExcelファイルに変換する方法を解説
Pythonには、さまざまな処理に対応できる豊富なライブラリが用意されています。本記事では、その中でもPDFファイルをExcelファイルに変換する方法について詳しく解説します。PythonでPDFをCSV形式に変換できるパッケージは複数存在しますが、ここではTabula-pyモジュールを使用します。Tabula-pyの主要部分はJavaで書かれており、PDFドキュメントを読み込み、PythonのDataFrameとして取得したり、JSONオブジェクトに変換したりすることができます。事前準備:JavaのインストールTabula-pyを使用する前に、システムにJavaが事前にインストールされている