Platformlar arası bir şekilde değiştirme tarihini almak kolay – os.path.getmtime(yol)
fonksiyonunu çağrın. Bu şekilde dosyanın en son ne zaman değiştirildiğinin Unix zaman damgasını alabilirsiniz.
Öte yandan, dosya oluşturma tarihlerini almak, üç büyük işletim sistemi arasında bile farklılık gösterir:
- Windows’da
ctime
bir dosyanın (https://msdn.microsoft.com/en-us/library/14h5k7ff.aspx) oluşturma tarihini depolar. Buna Python’daos.path.getctime()
veyaos.stat()
‘ın sonucunnda elde edilen bilgigye.st_ctime
özniteliği aracılığıylaerişebilirsiniz
. Bu Unix’te çalışmaz.ctime
Unix’te dosyanın özniteliklerinin veya içeriğinin en son değiştirildiği zaman bilgisini verir. - Mac’te ve diğer bazı Unix tabanlı işletim sistemlerinde
os.stat()
‘a yapılan bir çağrının sonucunun.st_birthtime
özniteliğini kullanabilirsiniz. - Linux’ta, en azından Python için bir C uzantısı yazmadan bunu yapmak şu anda imkansız. Linux ile yaygın olarak kullanılan bazı dosya sistemleri oluşturma tarihlerini depolasalar da (örneğin
ext4
bunlarıst_crtime
‘a depolar), Linux çekirdeği bunlara erişmenin bir yolunu sunmaz. Özellikle, en son çekirdek sürümünden itibaren C’deki çağrılardan döndürdükleri yapılar, herhangi bir oluşturma tarihi alanı içermezler.
Linux’ta yapılacak en iyi şey dosyanın mtime
özniteliğine os.path.getmtime()
veya bir os.stat()
çağrırsının .st_mtime
özniteliği aracılığıyla erişmektir. Bu, dosyanın içeriğinin en son ne zaman değiştirildiğini verse de bazı kullanım koşullarında yeterli olabilir.
Tüm bunları bir araya getirerek, platformlar arası bir kod aşağıdaki gibi görünmelidir:
import os
import platform
def creation_date(path_to_file):
"""
Mümkün değilse, bir dosyanın en son değiştirildiği tarihe geri dönerek oluşturduğu tarihi almaya çalışın.
"""
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:
# Muhtemelen Linux'tayız. Burada oluşturma tarihleri almanın kolay bir yolu yoktur, bu nedenle içeriğinin en son ne zaman değiştirildiğine karar vereceğiz.
return stat.st_mtime