os.stat renvoie les attributs st_mtime et st_ctime, l'heure de modification est st_mtime et st_ctime "change time" sur POSIX. Y at-il une fonction qui retourne l'heure de création d'un fichier en utilisant python et sous Linux?Obtenir le temps de création de fichier avec Python sous Linux
Répondre
3,1) Comment puis-je trouver le temps de création d'un fichier?
Vous ne pouvez pas - il n'est stocké nulle part. Les fichiers ont un temps modifié en dernier (indiqué par "ls -l"), un temps accédé en dernier (indiqué par "ls -lu") et un temps de changement d'inode (indiqué par "ls -l"). Ce dernier est souvent appelé "temps de création" - même dans certaines pages de manuel - mais c'est faux; Il est également défini par des opérations telles que mv, ln, chmod, chown et chgrp.
La page de manuel de "stat (2)" en traite.
Y a-t-il une commande pour trouver l'heure et la date de création d'un fichier sous Linux Si stat ne le fait pas? –
En général, les systèmes de fichiers UNIX ne stockent pas du tout l'heure de création - il n'existe aucune méthode pour extraire des données qui n'ont jamais été écrites sur le disque en premier lieu. – ephemient
essayer:
st_birthtime
Il nest pas » garantie d'être disponible sur tous les systèmes bien. A partir de la documentation:
Sur certains systèmes Unix (comme Linux), les attributs suivants peuvent également être disponibles: st_blocks (nombre de blocs alloués pour le fichier), st_blksize (système de fichiers blocksize), st_rdev (tapez du périphérique si un périphérique inode). st_flags (drapeaux définis par l'utilisateur pour le fichier ).
Sur d'autres systèmes Unix (tels que FreeBSD), les attributs suivants peuvent être disponibles (mais peuvent seulement être rempli si root essaie de les utiliser): st_gen (numéro de génération de fichiers), st_birthtime (temps de création de fichier).
Vous pourriez expliquer pourquoi vous voulez faire.
Une solution indirecte pourrait être d'utiliser un système revision control (un système de contrôle de version = VCS) pour gérer les fichiers dont le temps de naissance est nécessaire.
Vous pouvez donc utiliser git sur de tels fichiers (c'est-à-dire les gérer comme "code source"). Ensuite, vous savez non seulement quand ils ont été créés (en fait enregistré dans le VCS en utilisant git add
), mais pourquoi, par qui, quoi, etc ... Utilisez git log
pour obtenir tout cela ...
Bien sûr, vous besoin d'une certaine façon d'éduquer vos utilisateurs d'utiliser un VCS comme git
Selon un fil hereHFS et NTFS de Microsoft de OS X également suivre à la fois le temps de naissance, et je me dit l'OS X et versions Cygwin de stat() renvoie cette information. qui regardant le osx stat manpage semble correct au moins pour mac:
a, m, c, B
Le fichier temps dernier accès ou modifié, quand l'inode a été changée ou le le temps de naissance de l'inode.
Pour les systèmes de fichiers Linux plus récents comme ext4, Btrfs et JFS faire soutenir cela en utilisant debugfs, il y a une fonction bash prise de here qui va extraire l'horodatage créé date:
Vous pouvez récupérer le fichier date de création si vous traitez avec système de fichiers capable comme EXT4 - système de fichiers journalisé pour Linux:
horodatages Amélioration
... Ext4 fournit des horodateurs mesurés en nanosecondes. En outre, ext4 ajoute également la prise en charge des horodatages créés par date. Mais il n'y a pas de consensus dans la communauté sur ce point
... comme le souligne Theodore Ts'o, alors qu'il est facile d'ajouter un champ de date de création supplémentaire dans l'inode (permettant ainsi le support technique pour la date créée timestamps dans ext4), il est plus difficile de modifier ou d'ajouter les appels système nécessaires, comme stat() (qui nécessiterait probablement une nouvelle version) et les différentes bibliothèques qui en dépendent (comme glibc). Ces changements nécessiteraient la coordination de nombreux projets. Ainsi, même si les développeurs ext4 implémentent la prise en charge initiale des horodatages de date de création, cette fonctionnalité ne sera pas disponible pour les programmes utilisateur pour le moment. Qui se retrouvent avec la cotation finale Linus
Attendons cinq ans et voyons s'il y a un consensus sur le fait que cela soit nécessaire et utilisé du tout, plutôt que de se précipiter dans quelque chose juste parce que "nous pouvons".
xstat() {
for target in "${@}"; do
inode=$(ls -di "${target}" | cut -d ' ' -f 1)
fs=$(df "${target}" | tail -1 | awk '{print $1}')
crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null |
grep -oP 'crtime.*--\s*\K.*')
printf "%s\t%s\n" "${crtime}" "${target}"
done
}
L'exécution retourne la date de création:
:~$ echo 'print("hello world")' > blah.py
:~$ xstat "blah.py"
Mon Jul 6 13:43:39 2015 blah.py
:~$ echo 'print("goodbye world")' > blah.py
:~$ xstat "blah.py"
Mon Jul 6 13:43:39 2015 blah.py
Donc, à moins que le système de fichiers prend en charge alors il est impossible, si le système de fichiers ne vous pouvez alors exécuter le debugfs
en utilisant le sous-processus et analyser la sortie.
Certains systèmes de fichiers prennent en charge l'enregistrement de l'heure de naissance, mais Linux ne fournit pas d'interface pour l'obtenir.
Voir http://lwn.net/Articles/397442/
Si l'on atempts d'utiliser la "stat" commande pour l'obtenir: % stat -c% p {fichier ou dir}
Le résultat sera un "-" en raison de il n'a pas la capacité de le récupérer. Cependant, on peut utiliser cette méthode d'échantillonnage en utilisant debugfs avec xStat pour le récupérer (en fournissant à nouveau, que le système de fichiers utilisé supports collectant.)
https://gist.github.com/moiseevigor/8c496f632137605b322e
xstat() {
for target in "${@}"; do
inode=$(ls -di "${target}" | cut -d ' ' -f 1)
fs=$(df "${target}" | tail -1 | awk '{print $1}')
crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null |
grep -oP 'crtime.*--\s*\K.*')
printf "%s\t%s\n" "${crtime}" "${target}"
done
}
Remarque cela nécessite sudo.
Que voulez-vous dire qu'il ne peut pas être fait [1]? La fonction,
os.stat(path).st_birthtime, fonctionne très bien.
[1]: Somebody said that it couldn’t be done But he with a chuckle replied That “maybe it couldn’t,” but he would be one Who wouldn’t say so till he’d tried. So he buckled right in with the trace of a grin On his face. If he worried he hid it. He started to sing as he tackled the thing That couldn’t be done, and he did it! -- Edgar Albert Guest
Qu'est-ce que c'est? Votre réponse est confuse. – Billa
- 1. Création de fichiers exécutables sous Linux
- 2. Obtenir le temps CPU sous OS X
- 3. Environnement Safe Python sous Linux
- 4. Comment obtenir le temps de création du dossier (en millisecondes)?
- 5. Comment obtenir l'équivalent de printf_l sous Linux?
- 6. Analyse audio en temps réel sous Linux
- 7. Changer la date de création de fichier
- 8. Création et exécution du projet VS2005 sous Linux avec MonoDevelop?
- 9. Comment déterminer le type de fichier sous Linux?
- 10. Obtenir le nom global 'foo' n'est pas défini "avec le temps de Python
- 11. Comment obtenir le propriétaire et le groupe d'un dossier avec Python sur une machine Linux?
- 12. Identification de hauteur sous Linux
- 13. Temps de traçage en Python avec Matplotlib
- 14. Obtenir que Tomcat fonctionne correctement avec Netbeans 6.7 sous Linux
- 15. Obtenir le processus de création de noyau Linux pour reconstruire les fichiers modifiés
- 16. Exécution de Silverlight avec le serveur Apache (sous Linux)
- 17. Comment obtenir le chemin d'un processus sous Unix/Linux
- 18. Comment déverrouiller un dossier/fichier sous Linux
- 19. Création d'un exécutable pour Windows en utilisant le programme Qt sous Linux
- 20. Comment stocker de manière réversible un mot de passe avec Python sous Linux?
- 21. Comment obtenir la vitesse de l'interface réseau sous Linux?
- 22. Interprète Python avec Linux Ecran
- 23. Créer un groupe d'utilisateurs sous Linux en utilisant python
- 24. Le fichier décapé ne se charge pas sous Mac/Linux
- 25. comment le temps grâce à tout téléchargement avec python
- 26. Exécution d'un fichier binaire plat sous Linux
- 27. Comment installer le générateur de documentation sphinx de python sous Linux?
- 28. Crochet de clavier global sous Linux?
- 29. Implémentation de pthread_create sous Linux
- 30. Comment obtenir un chemin de fichier absolu en Python
Cela a fonctionné pour moi: http://stackoverflow.com/a/947239/4535020 – Tbb
Attend cela dépend de ce système de fichiers que vous utilisez: http://unix.stackexchange.com/questions/7562/what -file-systems-on-linux-store-the-creation-time – CSJ