はじめに
今回は、Pythonを使ってファイルの作成日時を取得し、その情報をExcelのカラムに反映する方法について学びました。
使用環境は以下のとおりです。
- OS: Windows 10 Pro
- バージョン: 20H2
背景
データ抽出や整理を行う際に、ファイルの作成日時を取得できると、データのバージョン管理や分析に非常に便利だと感じました。
そのため、Pythonでファイルのプロパティから作成日時を取得し、Excelファイルに自動的に書き込む処理を試してみました。
作成日時を取得する手順
① 必要なモジュールのインポート
import datetime
import os
os
モジュールでファイルの情報を取得datetime
モジュールで取得日時を整形
② ファイルパスの指定
path = "data/01.csv"
ここでは「data」フォルダ内の「01.csv」の作成日時を取得します。
③ ファイルの作成日時を取得
time = os.path.getctime(path)
この段階では、UNIX時間(エポック秒)として取得されるため、そのままでは人が読める形式ではありません。
④ 読みやすい形式に変換
days = datetime.datetime.fromtimestamp(time)
print(days)
このコードにより、2024-03-01 14:52:10.123456
のような日時形式に変換されます。
⑤ さらに見やすく整形(年月日+時刻)
make_file_days = days.strftime('%Y年%m月%d日%H:%M:%S')
これで、たとえば 2024年03月01日14:52:10
のような形式で取得できます。
Excelに作成日時を反映する
① Excel操作に必要なモジュールのインポート
import pandas as pd
import openpyxl
pandas
:Excelデータの読み込みや編集openpyxl
:Excelファイルの保存や書き込み
② Excelファイルの読み込み
df = pd.read_excel('test.xlsx')
ここでは「test.xlsx」というファイルを読み込みます。
③ 特定のカラムだけ取得(任意)
df = df[['c00']]
ここでは「c00」というカラムだけを使用しています。行ではなく列の選択になります。
④ 作成日時をカラム名として代入
作成日時は文字列のままでは代入エラーが出るため、リスト形式([]
)に変換します。
make_file_days = [make_file_days]
df.columns = make_file_days
これで、元のカラム名「c00」が、作成日時に置き換えられます。
苦労した点
作成日時を整形する際、以下の箇所でつまずきました。
days = datetime.datetime.fromtimestamp(time)
このdays
のデータ型がわからず、文字列操作(split
やloc
)がうまくいかず苦戦しました。
結果的には、strftime()
を使って文字列化すれば良いことが分かり、無事処理を完了できました。
まとめ
- Pythonでは
os.path.getctime()
でファイルの作成日時を取得できる datetime.fromtimestamp()
とstrftime()
で読みやすい日時に変換可能- 作成日時をExcelに反映するには、**
pandas
+openpyxl
**の併用が便利 df.columns = [作成日時]
でカラム名を更新できる
作成日時を取得・管理することで、ファイルの更新履歴やデータの管理が一層しやすくなります。
今後はさらに、更新日時やアクセス日時も取得できるように拡張していきたいと考えています。