Python

ファイル + フォルダ 一覧取得 も可能!【 Python 】

Kuni.W

Python が使えるようになると、色々なことが出来ること、出来る可能性を秘めていることに気づかされると思います。 フォルダ 情報が取得出来たり、 ファイル 名を取得できるのであれば、 ファイル+フォルダ 一覧取得 をしてみたくなりませんか?

スポンサーリンク

今までは、コマンドプロンプトこれからはPyton?

従来、フォルダやファイル一覧の取得するのには、コマンドプロンプト(個人的にはブラック画面と呼んでいます)を使えば、出せるようですね。

どうもブラック画面は、プログラマにしか使えず、敷居が高い感じでした。

でも、ファイルの容量を調べたかったり、一覧を出力したいということが、稀にですが、あります。

ファイルを異なるPCにコピーしたときにエラーがでたりすると、ちゃんとコピーできたのか不安になりませんか?

目視で確認するかんか、気の遠くなる話です。

しかし!!!

Pythonをかじったかたは、簡単にできてしまうんです。

今回は、そのサンプルコードを紹介しましょう!

サンプルコード

/* ライブラリインポート */
import glob
import os
import datetime as dt
import pandas as pd

/* 取得したいフォルダ */
folder = r'c:\windows\temp\**'

/* 対象ファイルをglobで取得 */
files = glob.glob(folder, recursive=True)

/* ヘッダー(タイトルの設定) */
header = 'ファイルパス', '種類', 'ファイル名', 'サイズ', '作成', '更新', '最終アクセス'

/* 初期化 */
file_list = []
file_list.append(header)
folder_count = 0
file_count = 0

for filename in files:
    if os.path.basename(filename).find('.') == -1:
        folder_count = folder_count + 1
        file_type = 'Folder'
    else:
        file_count = file_count + 1
        file_type = 'File'
    file = filename,\
        file_type,\
        os.path.basename(filename), \
        os.path.getsize(filename), \
        dt.datetime.fromtimestamp(os.path.getctime(filename)),\
        dt.datetime.fromtimestamp(os.path.getmtime(filename)),\
        dt.datetime.fromtimestamp(os.path.getatime(filename))
    file_list.append(file)

/* Excel出力 */
file_list = pd.DataFrame(file_list)
file_list.to_excel('file_list.xlsx', header=False)

print('フォルダ数:' + str(folder_count))
print('ファイル数:' + str(file_count))*/

下位のフォルダ・ファイルを取得する場合は、 ‘ ** ‘と記載、recurive=Trueとすることで一覧を取得できます。(11行目)

ファイルかフォルダかの判断は、’ . (ピリオド)’の有無で判断しています。(23行目)

リスト形式にデータを取得し、一覧に追加します。(29~36行目)

最後にExcelに出力しています。ヘッダーは14行目で設定、18行目でリストの先頭に追加していますので、ヘッダーはFalseで問題ありません。(40行目)

ファイル・フォルダ数によって時間かかりますが。。。

今回は、フォルダパス・ファイル名・ファイルサイズなど、一般的な値を出力しています。

私のPCのCドライブ直下のWindowsフォルダは、約9000フォルダ、約12万ファイルでしたが、1分未満で出力できます。(出力する属性を減らせばもちろん早くなります)

 

上記サンプルを参考にすれば、ファイルサイズの合計も出力できます。
アレンジ次第で強い武器・ツールになります。

いかがですか?

ぜひ、コピペで実行して活用してみてください!

ABOUT ME
記事URLをコピーしました