Come ottenere la creazione di file & data/ora di modifica in Python?
Ho uno script che ha bisogno di fare alcune cose basate sulle date di creazione e modifica dei file, ma deve essere eseguito su Linux e Windows.
Qual è il modo migliore per ottenere le date di creazione e modifica dei file in Python?
852
3
Avete un paio di scelte. Per prima cosa, puoi usare le funzioni
os.path.getmtime
eos.path.getctime
:L'altra opzione è usare
os.stat
:Nota:
ctime()
non si riferisce al tempo di creazione sui sistemi *nix, ma piuttosto all'ultima volta che i dati dell'inode sono cambiati. (grazie a kojiro per aver reso questo fatto più chiaro nei commenti fornendo un link ad un interessante post sul blog)os.stat https://docs.python.org/2/library/stat.html#module-stat
edit: nel codice più recente si dovrebbe probabilmente usare os.path.getmtime() (grazie Christian Oudard) ma notate che restituisce un valore in virgola mobile di time_t con frazione di secondi (se il vostro sistema operativo lo supporta)
Ci sono due metodi per ottenere il mod time, os.path.getmtime() o os.stat(), ma il ctime non è affidabile cross-platform (vedi sotto).
os.path.getmtime()
getmtime(path)
Ritorna il tempo dell'ultima modifica del percorso. Il valore di ritorno è un numero che dà il numero di secondi dall'epoca (vedere il modulo time). Solleva os.error se il file non non esiste o è inaccessibile. Nuovo nella versione 1.5.2. Modificato nella versione 2.3: Se os.stat_float_times() restituisce True, il risultato è un numero in virgola mobile.
os.stat()
stat(path)
Esegue una chiamata di sistema stat() sul percorso dato. Il valore di ritorno è un oggetto i cui attributi corrispondono ai membri della struttura stat, cioè: st_mode (protezione bits), st_ino (numero di inode), st_dev (dispositivo), st_nlink (numero di hard links), st_uid (ID utente del proprietario), st_gid (ID gruppo del proprietario), st_size (dimensione del file, in byte), st_atime (tempo del più recente accesso), st_mtime (tempo della più recente modifica del contenuto), st_ctime (dipendente dalla piattaforma; tempo della più recente modifica dei metadati su Unix, o tempo di creazione su Windows):
Nell'esempio precedente si dovrebbe usare statinfo.st_mtime o statinfo.st_ctime per ottenere rispettivamente mtime e ctime.