Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでファイルの作成日時・変更日時を取得する方法を解説

Pythonでは、ファイルの作成日時や最終変更日時(更新日時)を簡単に取得できます。ただし、OSによって使える関数が異なるため、注意が必要です。この記事では、WindowsとUNIX系システムそれぞれのケースについて詳しく解説します。

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

Windows環境でファイルの作成日時を取得するには、os.path.getctime() を使用します。

>>> import os
>>> print(os.path.getctime('my_file'))
1505928271.0689342

返される値は、エポック(1970年1月1日0時0分0秒 UTC)からの経過秒数です。人間が読める形式にしたい場合は、datetime.fromtimestamp() などを使って変換すると便利です。

UNIX系システムで作成日時を取得する

UNIX系のシステムでは、os.path.getctime() の挙動が異なります。この関数は「ファイルの属性または内容が最後に変更された時刻」を返すため、作成日時としては使えません。

UNIXベースのシステムで作成日時を取得するには、os.stat() が返すstat結果の st_birthtime 属性を使用します。ただし、Linuxでは st_birthtime が利用できない場合があるため、例外処理でフォールバックとして変更日時(st_mtime)を表示するのが実用的な書き方です。

import os

stat = os.stat(path_to_file)
try:
    print(stat.st_birthtime)
except AttributeError:
    # おそらくLinux環境。
    # 作成日時を簡単に取得する方法がないため、
    # 内容が最後に変更された日時にフォールバックする。
    print(stat.st_mtime)

出力例

1505928271.0689342

macOSでの補足情報

macOSなどのBSD系システムでは、st_birthtime が正しくサポートされており、実際の作成日時を取得できます。一方、多くのLinuxディストリビューションでは、ファイルシステムによっては作成日時自体が記録されないため、st_mtime(最終更新日時)で代用するのが一般的です。

ファイルの変更日時(更新日時)を取得する

ファイルの最終変更日時を取得するには、os.path.getmtime() を使用します。この関数はクロスプラットフォームでサポートされているため、WindowsでもUNIX系でも同じコードで動作します。

使用例

>>> import os
>>> print(os.path.getmtime('my_file'))
1505928275.3081832

まとめ

  • Windowsの作成日時:os.path.getctime()
  • UNIX系の作成日時:os.stat()st_birthtime(Linuxでは非対応の場合あり)
  • 変更日時:クロスプラットフォーム対応の os.path.getmtime()

OSごとの違いを意識して適切な関数を選択することで、どの環境でも正確なタイムスタンプ情報を取得できます。

  1. C#でファイルの作成日時を取得する方法

    C#でファイルの作成日時を取得するには、FileInfo クラスの CreationTime プロパティを使用します。このプロパティは、DateTime 型の日付情報を返します。まず、FileInfo オブジェクトを作成し、そこから作成日時を DateTime 型の変数に格納します。FileInfo file = new FileInfo(new.txt); DateTime dt = file.CreationTime;コード例以下は、ファイルを作成してからその作成日時を取得し、コンソールに出力する完全なサンプルコードです。using System.IO; using System; pu

  2. Python 3のtkinterでファイルダイアログから文字列(ファイルパス)を取得する方法

    tkinterアプリケーションでファイルシステムを操作したい場合には、filedialogモジュールを利用します。このモジュールは、システム上のファイルを扱うための仕組みを提供しており、さまざまな種類のファイルダイアログを簡単に作成できる組み込み関数を多数備えています。用途に応じて任意のfiledialog関数を選択し、アプリケーションに組み込むことが可能です。中でも最もよく使われているのがfiledialog.askopenfilename()です。この関数を呼び出すと、ユーザーにファイルを開かせるためのダイアログが表示され、選択されたファイルのパスを文字列として受け取ることができます。サン