Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでzipファイルからすべての.txtファイルを抽出する方法

zipファイルからすべての.txtファイルを抽出するには、アーカイブ内の全ファイルをループ処理し、各ファイルがテキストファイル(.txt)かどうかを判定します。.txtファイルであれば抽出する、という流れになります。この処理にはPython標準ライブラリのzipfileモジュールと、そのextract()関数を使用します。

基本的なコード例

import zipfile

my_zip = zipfile.ZipFile('my_zip_file.zip')  # ここにzipファイル名を指定
storage_path = '.'

for file in my_zip.namelist():
    if my_zip.getinfo(file).filename.endswith('.txt'):
        # .txtファイルであれば現在のフォルダに抽出
        my_zip.extract(file, storage_path)

my_zip.close()

上記のコードを実行すると、my_zip_file.zipが開かれ、アーカイブ内からすべての.txtファイルが抽出され、現在のディレクトリに保存されます。namelist()はzip内の全ファイル名のリストを返し、getinfo()で各ファイルの情報を取得して拡張子を確認しています。

with文とextractall()を使ったより簡潔な方法

リスト内包表記とextractall()を組み合わせると、条件に合うファイルだけをまとめて抽出でき、コードがより簡潔になります。また、with文を使えばファイルのクローズ忘れも防げます。

import zipfile

with zipfile.ZipFile('my_zip_file.zip') as my_zip:
    txt_files = [f for f in my_zip.namelist() if f.endswith('.txt')]
    my_zip.extractall(path='.', members=txt_files)

この方法では、まずnamelist()から.txtで終わるファイル名だけをリストアップし、それをextractall()members引数に渡すことで、該当ファイルのみを一括抽出しています。大量のファイルが含まれるzipを扱う場合にも効率的です。

注意点

  • パス区切りが「/」で統一されているため、Windows環境でもendswith('.txt')による判定は問題なく動作します。
  • 大文字小文字を区別したい場合は、f.lower().endswith('.txt')のようにすると安全です。
  • 日本語などのマルチバイト文字を含むファイル名を扱う場合は、エンコーディングに注意してください(Python 3ではUTF-8が自動的に処理されます)。
  1. PythonでPDFファイルをExcelファイルに変換する方法を解説

    Pythonには、さまざまな処理に対応できる豊富なライブラリが用意されています。本記事では、その中でもPDFファイルをExcelファイルに変換する方法について詳しく解説します。PythonでPDFをCSV形式に変換できるパッケージは複数存在しますが、ここではTabula-pyモジュールを使用します。Tabula-pyの主要部分はJavaで書かれており、PDFドキュメントを読み込み、PythonのDataFrameとして取得したり、JSONオブジェクトに変換したりすることができます。事前準備:JavaのインストールTabula-pyを使用する前に、システムにJavaが事前にインストールされている

  2. LinuxでZipファイルを解凍する方法|GUIとコマンドラインの使い方を徹底解説

    Zipファイルは、ダウンロード速度が遅く1バイトでも節約が重要だった時代ほど頻繁には使われなくなりました。それでも今なお広く普及しているファイル形式の一つであり、いずれ開く必要に迫られることもあるでしょう。使用しているディストリビューションにもよりますが、Zipアーカイブの展開自体は比較的簡単です。とはいえ、より高度な操作方法や応用的なテクニックを知っておけば、いざというときにきっと役立ちます。GUIを使ってZipファイルを解凍する多くのLinuxデスクトップ環境では、Zipファイルの解凍は非常に簡単です。ファイルを右クリックすると複数のオプションが表示され、通常は「ここで展開」や「ここに解凍