Kaip gauti failo sukūrimo & amp; modifikavimo data / laikas Python?

Turiu scenarijų, kuris turi atlikti tam tikrus veiksmus pagal failų sukūrimo ir pakeitimo datas, bet turi veikti "Linux" ir "Windows".

Koks yra geriausias visoms platformoms skirtas būdas gauti failo sukūrimo ir pakeitimo datą ir laiką "Python" programoje?

Galite rinktis iš kelių variantų. Pirmiausia galite naudoti funkcijas os.path.getmtime ir os.path.getctime:

import os.path, time
print("last modified: %s" % time.ctime(os.path.getmtime(file)))
print("created: %s" % time.ctime(os.path.getctime(file)))

Kita galimybė - naudoti os.stat:

import os, time
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
print("last modified: %s" % time.ctime(mtime))

Pastaba: ctime() *nix sistemose reiškia ne sukūrimo laiką, o paskutinį inodo duomenų pakeitimo laiką. (ačiū kojiro už tai, kad komentaruose paaiškino šį faktą, pateikdamas nuorodą į įdomų tinklaraščio įrašą)

Komentarai (3)

os.stat https://docs.python.org/2/library/stat.html#module-stat

redaguoti: naujesniame kode tikriausiai turėtumėte naudoti os.path.getmtime() (ačiū Christian Oudard) bet atkreipkite dėmesį, kad jis grąžina slankiojo kablelio reikšmę time_t su sekundžių dalimi (jei jūsų OS tai palaiko)

Komentarai (2)

Yra du metodai, kaip gauti mod laiką: os.path.getmtime() arba os.stat(), tačiau ctime nėra patikimas įvairioms platformoms (žr. toliau).

os.path.getmtime()

getmtime(path)
Grąžina paskutinio kelio pakeitimo laiką. Grąžinama reikšmė yra skaičius, nurodantis sekundžių skaičių nuo epochos (žr. laiko modulį). Sukeliama os.error, jei failas neegzistuoja arba yra nepasiekiamas. Nauja 1.5.2 versijoje. Pakeista 2.3 versijoje: Jei os.stat_float_times() grąžina True, rezultatas yra slankiojo kablelio skaičius.

os.stat()

stat(path)
Atlikti sistemos skambutį stat() nurodytu keliu. Grąžinama vertė yra objektas, kurio atributai atitinka stat struktūros narius, būtent: st_mode (apsauga bitai), st_ino (inodo numeris), st_dev (įrenginys), st_nlink (kietųjų nuorodų skaičius), st_uid (savininko naudotojo ID), st_gid (savininko grupės ID), st_size (failo dydis baitais), st_atime (paskutinės prieigos laikas), st_mtime (naujausio turinio laikas) pakeitimo laikas), st_ctime (priklauso nuo platformos; paskutinio metaduomenų pakeitimo laikas "Unix" sistemoje arba sukūrimo laikas "Windows" sistemoje):

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L
>>> 

Pirmiau pateiktame pavyzdyje, norėdami gauti mtime ir ctime, turėtumėte naudoti statinfo.st_mtime arba statinfo.st_ctime.

Komentarai (0)