koddla

Yazılımcıları bilgi ile güçlendirir.

Python’da dosya oluşturma ve değiştirme tarihini/saatini nasıl görürüz?

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’da os.path.getctime() veya os.stat()‘ın sonucunnda elde edilen bilgigye .st_ctime özniteliği aracılığıyla eriş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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top