本記事では、指定したフォルダ内にあるファイル名とサイズ、日付の一覧を取得してcsvファイルへ保存する雛形コードを載せました。
例えば、下図のようにフォルダ内に複数のファイルがあります。この中から、拡張子「.exe」のファイルのみをリストで取得後、ファイルサイズと日付をループで取得してゆきます。
下図は、本コード実行後に生成したcsvファイルです。日付取得については、まずはUNIXタイム(エポックタイム)で取得後、日時へ変換する仕様にしています。 日付順にソートしたり、列の位置を入れ替えたりしています。
■本プログラム
# -*- coding: utf-8 -*- import os, glob import datetime import pandas as pd import numpy as np def convert_format_size_func(file_size): # 表記フォーマットを辞書で作成 bit = { "KB": 10, "MB": 20, "GB": 30, "TB": 40} # 辞書のキーと値をループで順次、取得する for unit, bit_shift in bit.items(): # ビット変換 val = file_size / float(1 << bit_shift) if val < 1000: break # 1000未満になったらループを抜ける return "{:,.2f}".format(val) + " " + unit def main(): # 指定したディレクトリ内のexeファイルをリストで抽出する file_list = glob.glob(input_dir + '/*.exe') print(file_list) cnt = len(file_list) data_list = [] for i, file_path in enumerate(file_list, start=1): # ファイルサイズの取得 file_size = os.path.getsize(file_path) # ファイル表記をメガバイトへ変換 file_size2 = convert_format_size_func(file_size) # ユニックスタイムの取得 unix_time = os.stat(file_path).st_mtime # 日時へ変換 date_time = datetime.datetime.fromtimestamp(unix_time) # 書式を変換 date_time = date_time.strftime('%Y/%m/%d') print(i, '/', cnt, os.path.basename(file_path), file_size, date_time) data_list.append([os.path.basename(file_path), # 1 file_size, # 2 file_size2, # 3 unix_time, # 4 date_time] # 5 ) column_list = ['File_name', 'File_size', 'File_size2', 'Unix_time', 'Date_time'] # リストからpandasのデータフレーム型へ変換する。この時列名はcolumns=でリストで与える。 df = pd.DataFrame(data_list, columns = column_list) # 列名を指定してソートする(並び替える) df = df.sort_values(['Date_time'], ascending=True) # 列順を変更する df = df.iloc[:, [4, 0, 2]] # csvファイルへ書き出し df.to_csv('data.csv', sep=',', index=False, encoding='utf-8') print(df) if __name__ == '__main__': input_dir = 'D:/00_backup/01_new' main() print("finished")
以上
<広告>
リンク