Как получить создание файла & amp; дата / время модификации в Python?

Это работает с использованием Visual Studio 2013:

#include <io.h>
#include <fcntl.h>
#include <iostream>

int main( int argc, char * argv[] )
{
    _setmode( _fileno( stdout ),  _O_BINARY );
    std::cout << std::endl;
}

Он выведет только [0A], а не [0D] [0A].

814
задан Mark Biek 25 October 2008 в 21:54
поделиться

7 ответов

У Вас есть несколько вариантов. Для одного можно использовать os.path.getmtime и 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)))

Ваша другая опция состоит в том, чтобы использовать 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))

Примечание : ctime() делает не , относятся ко времени создания на *, отклоняют системы, а скорее в прошлый раз inode измененные данные. (благодаря kojiro для того, чтобы сделать тот факт более ясным в комментариях путем обеспечения ссылки на интересное сообщение в блоге)

641
ответ дан phoenix 25 October 2008 в 21:54
поделиться

os.stat https://редактирование docs.python.org/2/library/stat.html#module-stat

: В более новом коде необходимо, вероятно, использовать os.path.getmtime () (благодарит Christian Oudard)
, но обратите внимание, что это возвращает значение с плавающей точкой time_t с дробными секундами (если ОС поддерживает его)

46
ответ дан kmarsh 25 October 2008 в 21:54
поделиться

Существует два метода для получения ультрасовременного времени, os.path.getmtime () или os.stat (), но ctime не надежен межплатформенный (см. ниже).

os.path.getmtime ()

getmtime ( путь )
Возврат время последнего изменения пути. Возвращаемое значение является числом, дающим число секунд с эпохи (см. модуль времени). Повысьте os.error, если файл не существует или недоступен. Новый в версии 1.5.2. Измененный в версии 2.3: Если OS stat_float_times () возвраты Правда, результатом является число с плавающей точкой.

os.stat ()

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

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

В вышеупомянутом примере Вы использовали бы statinfo.st_mtime или statinfo.st_ctime для получения mtime и ctime, соответственно.

37
ответ дан Jay 25 October 2008 в 21:54
поделиться

os.stat возвраты именованный кортеж с st_mtime и st_ctime атрибуты. Время изменения st_mtime на обеих платформах; к сожалению, в Windows, ctime означает "время создания", тогда как на POSIX это означает "время изменения". Я не знаю ни о каком способе получить время создания на платформах POSIX.

11
ответ дан Mr_and_Mrs_D 25 October 2008 в 21:54
поделиться
>>> import os
>>> os.stat('feedparser.py').st_mtime
1136961142.0
>>> os.stat('feedparser.py').st_ctime
1222664012.233
>>> 
3
ответ дан unmounted 25 October 2008 в 21:54
поделиться

os.stat действительно включает время создания. Нет только никакого определения st_anything для элемента os.stat(), который содержит время.

Так пробуют это:

os.stat('feedparser.py')[8]

Сравнивают это с Вашим создавать дату на файле в ls-lah

, Они должны быть тем же.

0
ответ дан Rod 25 October 2008 в 21:54
поделиться

Лучшая функция для этого - os.path.getmtime () . Внутренне это просто использует os.stat (filename) .st_mtime .

Модуль datetime лучше всего управляет метками времени, поэтому вы можете получить дату изменения как объект datetime , например это:

import os
import datetime
def modification_date(filename):
    t = os.path.getmtime(filename)
    return datetime.datetime.fromtimestamp(t)

Пример использования:

>>> d = modification_date('/var/log/syslog')
>>> print d
2009-10-06 10:50:01
>>> print repr(d)
datetime.datetime(2009, 10, 6, 10, 50, 1)
367
ответ дан 22 November 2019 в 21:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: