Pythonでファイルの作成日時・更新日時・アクセス日時を取得する方法

★気に入ったらシェアをお願いします!


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニア&Windowsユーザー向けにPythonでお仕事に便利なツールの作り方をお伝えしています。

前回の記事はコチラでした。

Pythonで現在の日時を取得して指定のフォーマットの文字列に変換する
プログラミング初心者&Windowsユーザー向けにPythonでフォルダ圧縮ツールを作る方法をお伝えしています。今回はPythonで現在の日時を取得して文字列に変換する方法についてお伝えします。

指定のフォルダをZIP圧縮するツールを作ったんですね。

日付が違うと新しいZIPファイルが生成されますので、フォルダの中にどんどんZIPファイルが増えていってしまうんですね。

ですから、ある一定の数以上になったら、古い順にファイルを自動で削除てくれないかな~などと思ってしまうわけです。

と、いうことで、そんなプログラムを作ってみたいと思います。

まず、今回はPythonでファイルの作成日時・更新日時・アクセス日時を取得する方法です。

では、行ってみましょう!

フォルダ内の古いZIPファイルを削除したい

まず、お題となるフォルダは以下のような状態とします。

Pythonで古いファイルを削除するフォルダ

日付ごとにzipファイルがどんどん増えていくんで、ZIPファイルの数が3を超えたら自動で削除をしていきたいとします。

ファイルの作成日時を取得する

まず、「古い」というのをどのように判断をするか…という課題がありますよね。

パっと見ですと、ファイル名の日付部分を分解してそれで比較するという方法もありそうですが、そこはPython。実はファイルの作成日時を取得する命令が用意されています。

os.path.getctime関数です。

os.path.getctime(path)

pathはフルパスでも良いですし、作業フォルダであればファイル名だけでもOKです。

ですから、例えば以下のようなスクリプトを作れば、「test_20170910.zip」の作成日時を知ることができます。

osモジュールが必要ですので、インポートをします。あとは、前述の書式通りに作成日時を知りたいファイルを指定すればOKですね。

実行をしますと…

Pythonでファイルの作成日時を取得

1505220473.867423

なんじゃこりゃ…ってやつが出力されましたね。

エポックとは、エポック秒とは

os.path.getctime関数で取得できる日時はエポック秒と呼ばれるものです。

まず、エポックというのがありまして、Python公式ドキュメントから引用しますと、以下のようなものです。

エポック (epoch) は時刻の起点のことで、これはプラットフォーム依存です。 Unix では、エポックは (UTC で) 1970 年 1 月 1 日 0 時 0 分 0 秒です。 与えられたプラットフォームでエポックが何なのかを知るには、 time.gmtime(0) の値を見てください。

引用16.3. time — 時刻データへのアクセスと変換 — Python 3.6.1 ドキュメント

UNIX時間とも呼ばれますね。

そして、エポック秒は、エポックからの経過した秒数のことです。

1970年から15億秒過ぎているわけですね…私、1976年生まれなので、それに近い秒数を過ごしていると考えると感慨深いものです。

エポック秒で古いファイルを判定するには

この15億秒なにがし…我々人間には結局いつなん?という感じですが、実際にファイルが新しいか、古いかを比較するためには、そんなことを知る必要はありません。

このエポック秒をわざわざ年月日形式(例えばdatetimeオブジェクトのような)に変換する必要はないんです。

というのも、エポック秒が小さければ「古い」というわけですから、そのまま比較すればOKなわけです。

ファイルの更新日時とアクセス日時を取得する

ところで、ちょっと寄り道をします。

Pythonでは、ファイルの作成日時だけでなく、アクセス日時や更新日時を取得することができます。

アクセス日時を取得するには、os.path.getatime関数

os.path.getatime(path)

更新日時を取得するには、os.path.getmtime関数

os.path.getmtime(path)

取得できます。

いずれもエポック秒での取得になります。

getctime関数と合わせて覚えておくとよいですね。

まとめ

今回は、Pythonでファイルの作成日時、更新日時、アクセス日時を取得する方法をお伝えしました。

また、エポックやエポック秒についてもお伝えしました。

ファイルの作成日時もそのまんまシュパっと取得できちゃうんですね。Python、ありがたいです。

次回は、フォルダの中の指定の拡張子のファイル一覧を取得する方法をお伝えします。

Pythonでフォルダ内の特定の拡張子のファイルだけ抽出する方法
プログラミング初心者&Windowsユーザー向けPythonで古いファイルを自動で削除するツールの作り方をお伝えしています。今回はPythonでフォルダ内の特定の拡張子のファイルだけ抽出する方法についてです。

どうぞお楽しみに!

連載目次:Pythonでフォルダ内の古いファイルを自動削除するプログラム

フォルダの中にどんどんたまっていくファイルたち…。Pythonでツールを作って、ファイルの数が一定数を超えたら古い削除から自動で削除するようにしちゃいましょう。

  1. Pythonでファイルの作成日時・更新日時・アクセス日時を取得する方法
  2. Pythonでフォルダ内の特定の拡張子のファイルだけ抽出する方法
  3. Pythonでリストに要素を追加をする方法、リストの要素を並び替えをする方法
  4. Pythonでフォルダ内の古いファイルを削除するスクリプトを作る方法