Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mendapatkan Masa Penciptaan dan Pengubahsuaian Fail Merentasi Sistem Pengendalian Berbeza?

Bagaimanakah Saya Boleh Mendapatkan Masa Penciptaan dan Pengubahsuaian Fail Merentasi Sistem Pengendalian Berbeza?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 19:40:12697semak imbas

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

Penciptaan Fail Merentasi Platform dan Pengubahsuaian Tarikh/Masa Penciptaan

Mendapatkan penciptaan fail dan tarikh/masa pengubahsuaian merentas sistem pengendalian yang berbeza boleh tugas yang kompleks.

Pengubahsuaian Dates

Mendapatkan tarikh pengubahsuaian fail merentas platform agak mudah menggunakan os.path.getmtime(), yang menyediakan cap waktu Unix pengubahsuaian terakhir.

Tarikh Penciptaan

Untuk tarikh penciptaan fail, proses menjadi lebih rumit disebabkan oleh platform khusus pelaksanaan:

  • Windows: Windows menyimpan tarikh penciptaan dalam ctime fail. Ia boleh diakses melalui os.path.getctime() atau atribut .st_ctime os.stat().
  • Mac: Pada Mac dan OS berasaskan Unix tertentu, .st_birthtime atribut os.stat() menyediakan tarikh penciptaan.
  • Linux: Linux pada masa ini tidak mempunyai cara piawai untuk mendapatkan tarikh penciptaan. Walaupun sesetengah sistem fail, seperti ext4, menyimpan data, kernel Linux tidak menyediakan kaedah langsung untuk mengaksesnya. Alternatif terdekat ialah masa fail, yang menunjukkan pengubahsuaian kandungan terakhir.

Kod Merentas Platform

Menggabungkan pendekatan khusus platform ini, satu rentas- coretan kod platform adalah seperti berikut:

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

Kod ini mula-mula menyemak platform untuk menggunakan kaedah yang sesuai. Pada Windows, ia menggunakan os.path.getctime(), manakala pada Mac dan beberapa OS berasaskan Unix, ia cuba mendapatkan semula tarikh penciptaan menggunakan .st_birthtime. Untuk Linux, ia kembali kepada tarikh pengubahsuaian yang diperoleh melalui .st_mtime.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Masa Penciptaan dan Pengubahsuaian Fail Merentasi Sistem Pengendalian Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn