Home » Python » Pythonのzipfileでxlsxファイルに含まれるファイル名を確認する

Pythonのzipfileでxlsxファイルに含まれるファイル名を確認する

動作検証バージョン:Windows 10 + Python 3.7.3

できる 仕事がはかどるPython自動処理 全部入り。』のChapter 5「ファイルの操作と圧縮・展開」に、zipファイルの中身を確認するスクリプトが紹介されています。

まったく同じロジックで、xlsxファイルに含まれるファイル名も確認できるはずですから、試してみました。

[スポンサードリンク]

ZipFile.inforlist()からファイル名を取得するスクリプト

以下のスクリプトを実行すれば、Cドライブtempフォルダーのfoo.xlsxファイルに含まれるファイルの名前がprintされます。

import zipfile

with zipfile.ZipFile('C:\\temp\\foo.xlsx') as zf:
    for info in zf.infolist():
        print(info.filename)


できる 仕事がはかどるPython自動処理 全部入り。』のp.105に掲載されているスクリプトと、実質同じです。

zipfile.ZipFile()の引数で指定するファイルをフルパスにして、モードを指定する第2引数を省略しています。

スクリプトの実行結果

ワークシート「Sheet1」だけが存在する、新規に作成したブックの場合、以下のようなファイル名が出力されます。
[Content_Types].xml
_rels/.rels
xl/workbook.xml
xl/_rels/workbook.xml.rels
xl/worksheets/sheet1.xml
xl/theme/theme1.xml
xl/styles.xml
docProps/core.xml
docProps/app.xml

ZipFile.namelist()を使ってファイル名を取得するスクリプト

ネットを検索してみても、なぜか上記のZipFile.infolist()を使ったコードをよく見かけるように感じますが、ファイル名のリストを作成するZipFile.namelist()を使った、以下のようなスクリプトでも、Cドライブtempフォルダーのfoo.xlsxファイルに含まれるファイルの名前をprintできます。

import zipfile

with zipfile.ZipFile('C:\\temp\\foo.xlsx') as zf:
    for name in zf.namelist():
       print(name)

先述のスクリプトではZipFile.infolist()メソッドで、Zipinfoオブジェクトを取得しているのに対し、
     for info in zf.infolist():

こちらではZipFile.namelist()メソッドで直接ファイル名のリストを取得しています。
     for name in zf.namelist():

Zipinforオブジェクトを取得した場合にはZipinfo.filenameでファイル名を取得する必要があるのに対し、
     for info in zf.infolist():
         print(info.filename)

ファイル名のリストを取得した場合は、リストから要素を取得する一般的な処理だけで、ファイル名を取得できます。
     for name in zf.namelist():
        print(name)

最終更新日時:2024-01-16 16:39

[スポンサードリンク]

Home » Python » Pythonのzipfileでxlsxファイルに含まれるファイル名を確認する

「Python」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.