Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir de manière fiable les temps de création et de modification de fichiers sur différents systèmes d'exploitation ?

Comment puis-je obtenir de manière fiable les temps de création et de modification de fichiers sur différents systèmes d'exploitation ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 19:40:12708parcourir

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

Récupération de la date/heure de création et de modification de fichiers multiplateformes

L'obtention des dates/heures de création et de modification de fichiers sur différents systèmes d'exploitation peut être une tâche complexe.

Modification Dates

Obtenir les dates de modification de fichiers sur plusieurs plates-formes est relativement simple en utilisant os.path.getmtime(), qui fournit l'horodatage Unix de la dernière modification.

Dates de création

Pour les dates de création de fichiers, le processus devient plus complexe en raison des spécificités de la plateforme. implémentations :

  • Windows : Windows stocke la date de création dans le ctime du fichier. Il est accessible via os.path.getctime() ou l'attribut .st_ctime de os.stat().
  • Mac : Sur Mac et certains systèmes d'exploitation basés sur Unix, le .st_birthtime l'attribut de os.stat() fournit la date de création.
  • Linux : Linux n'a actuellement pas de méthode standardisée pour récupérer les dates de création. Bien que certains systèmes de fichiers, comme ext4, stockent les données, le noyau Linux ne fournit pas de méthode directe pour y accéder. L'alternative la plus proche est le mtime du fichier, qui indique la dernière modification du contenu.

Code multiplateforme

En combinant ces approches spécifiques à la plateforme, un L'extrait de code de la plateforme est le suivant :

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

Ce code vérifie d'abord la plateforme pour appliquer la méthode appropriée. Sous Windows, il utilise os.path.getctime(), tandis que sur Mac et certains systèmes d'exploitation Unix, il tente de récupérer la date de création en utilisant .st_birthtime. Pour Linux, on revient à la date de modification obtenue via .st_mtime.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn