Шаг 169.
Основы языка Python.
Работа с файлами и каталогами. Функции для работы с файлами (окончание)

    На этом шаге мы рассмотрим дополнительные функции, предназначенные для работы с файлами.

    Модуль os.path содержит дополнительные функции, позволяющие проверить наличие файла, получить размер файла и др. Опишем эти функции:

    Получить размер файла и время создания, изменения и доступа к файлу, а также значения других метаданных позволяет функция stat() из модуля os. В качестве значения функция возвращает объект stat_result, содержащий десять атрибутов: st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime и st_ctime. Пример использования функции stat():

 >>> import os, time
 >>> s = os.stat(r"file.txt")
 >>> s
os.stat_result(st_mode=33206, st_ino=205195258022237095, st_dev=2148157263, 
st_nlink=1, st_uid=0, st_gid=0, st_size=18, st_atime=1526646102, st_mtime=1533803030, 
st_ctime=1526646102)
>>> s.st_size #  Размер файла
18
>>> t = s.st_atime # Время последнего доступа к файлу
>>> time.strftime("%d.%m.%Y %H:%M:%S", time.localtime (t) )
'18.05.2018 17:21:42'
>>> t = s.st_ctime # Время создания файла
>>> time.strftime("%d.%m.%Y %H:%M:%S", time.localtime (t) )
'18.05.2018 17:21:42'
>>> t  = s.st_mtime # Время последнего изменения файла
>>> time.strftime("%d.%m.%Y %H:%M:%S", time.localtime (t) )
'09.08.2018 13:23:50'

    Обновить время последнего доступа и время изменения файла позволяет функция utime() из модуля os. Функция имеет два варианта формата:

utime(<Путь к файлу>, None)
utime(<Путь к файлу>, (<Последний доступ>, <Изменение файла>))

    Начиная с Python 3.3, в качестве первого параметра можно указывать не только строковый путь, но и целочисленный дескриптор открытого файла, возвращенный функцией open() из модуля os. Если в качестве второго параметра указано значение None, то время доступа и изменения файла будет текущим. Во втором варианте формата функции utime() указывается кортеж из новых значений в виде количества секунд, прошедших с начала эпохи. Если файл не существует, возбуждается исключение OSError. Пример использования функции utime():

>>> import os, time
>>> os.stat (r"file.txt") # Первоначальные значения
os.stat_result(st_mode=33206, st_ino=205195258022237095, st_dev=2148157263, 
st_nlink=1, st_uid=0, st_gid=0, st_size=18, st_atime=1526646102, st_mtime=1533803030, 
st_ctime=1526646102)
>>> t = time.time () - 600 
>>> os.utime (r"file.txt", (t, t)) # Текущее время минус 600 сек
>>> os.stat (r"file.txt")
os.stat_result(st_mode=33206, st_ino=205195258022237095, st_dev=2148157263, 
st_nlink=1, st_uid=0, st_gid=0, st_size=18, st_atime=1535547659, st_mtime=1535547659, 
st_ctime=1526646102)
>>> os.utime (r"file.txt", None)   # Текущее время
>>> os.stat (r"file.txt")
os.stat_result(st_mode=33206, st_ino=205195258022237095, st_dev=2148157263, 
st_nlink=1, st_uid=0, st_gid=0, st_size=18, st_atime=1535548480, st_mtime=1535548480, 
st_ctime=1526646102)

    На следующем шаге мы рассмотрим преобразование пути к файлу или каталогу.




Предыдущий шаг Содержание Следующий шаг