ファイル + フォルダ 一覧取得 も可能!【 Python 】
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分未満で出力できます。(出力する属性を減らせばもちろん早くなります)
上記サンプルを参考にすれば、ファイルサイズの合計も出力できます。
アレンジ次第で強い武器・ツールになります。
いかがですか?
ぜひ、コピペで実行して活用してみてください!