ホームページ > バックエンド開発 > Python チュートリアル > 異なるオペレーティング システム間でファイルの作成時間と変更時間を確実に取得するにはどうすればよいですか?

異なるオペレーティング システム間でファイルの作成時間と変更時間を確実に取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-22 19:40:12
オリジナル
696 人が閲覧しました

How Can I Reliably Get File Creation and Modification Times Across Different Operating Systems?

クロスプラットフォームのファイル作成および変更日時の取得

異なるオペレーティング システム間でファイルの作成および変更の日時を取得することができます。複雑なタスクです。

修正日付

クロスプラットフォームでのファイル変更日の取得は、最終変更の Unix タイムスタンプを提供する os.path.getmtime() を使用することで比較的簡単です。

作成日

ファイルの作成日については、プラットフォーム固有の理由によりプロセスがより複雑になります実装:

  • Windows: Windows はファイルの ctime に作成日を保存します。 os.path.getctime() または os.stat() の .st_ctime 属性を通じてアクセスできます。
  • Mac: Mac および特定の Unix ベースの OS では、.st_birthtime os.stat() の属性は作成日を提供します。
  • Linux: Linuxには現在、作成日を取得する標準化された方法がありません。 ext4 などの一部のファイル システムではデータが保存されますが、Linux カーネルにはデータにアクセスするための直接的な方法が提供されていません。最も近い代替手段はファイルの mtime で、最後のコンテンツ変更を示します。

クロスプラットフォーム コード

これらのプラットフォーム固有のアプローチを組み合わせると、クロスプラットフォーム コードプラットフォームのコード スニペットは次のとおりです:

import os
import platform

def creation_date(path_to_file):
    """
    Try to get the date that a file was created, falling back to when it was
    last modified if that isn't possible.
    See http://stackoverflow.com/a/39501288/1709587 for explanation.
    """
    if platform.system() == 'Windows':
        return os.path.getctime(path_to_file)
    else:
        stat = os.stat(path_to_file)
        try:
            return stat.st_birthtime
        except AttributeError:
            # We're probably on Linux. No easy way to get creation dates here,
            # so we'll settle for when its content was last modified.
            return stat.st_mtime
ログイン後にコピー

このコードは最初にプラットフォームをチェックして、適切なコードを適用します。 方法。 Windows では os.path.getctime() を使用しますが、Mac および一部の Unix ベースの OS では、.st_birthtime を使用して作成日を取得しようとします。 Linux の場合は、.st_mtime.

を通じて取得した変更日にフォールバックします。

以上が異なるオペレーティング システム間でファイルの作成時間と変更時間を確実に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート