Это работает с использованием 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].
У Вас есть несколько вариантов. Для одного можно использовать 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 для того, чтобы сделать тот факт более ясным в комментариях путем обеспечения ссылки на интересное сообщение в блоге)
os.stat https://редактирование docs.python.org/2/library/stat.html#module-stat
: В более новом коде необходимо, вероятно, использовать os.path.getmtime () (благодарит Christian Oudard)
, но обратите внимание, что это возвращает значение с плавающей точкой time_t с дробными секундами (если ОС поддерживает его)
Существует два метода для получения ультрасовременного времени, os.path.getmtime () или os.stat (), но ctime не надежен межплатформенный (см. ниже).
getmtime ( путь )
Возврат время последнего изменения пути. Возвращаемое значение является числом, дающим число секунд с эпохи (см. модуль времени). Повысьте os.error, если файл не существует или недоступен. Новый в версии 1.5.2. Измененный в версии 2.3: Если OS stat_float_times () возвраты Правда, результатом является число с плавающей точкой.
статистика ( путь )
Выполняют статистику () системный вызов на данном пути. Возвращаемое значение является объектом, атрибуты которого соответствуют членам структуры статистики, а именно: 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, соответственно.
os.stat
возвраты именованный кортеж с st_mtime
и st_ctime
атрибуты. Время изменения st_mtime
на обеих платформах; к сожалению, в Windows, ctime
означает "время создания", тогда как на POSIX это означает "время изменения". Я не знаю ни о каком способе получить время создания на платформах POSIX.
>>> import os
>>> os.stat('feedparser.py').st_mtime
1136961142.0
>>> os.stat('feedparser.py').st_ctime
1222664012.233
>>>
os.stat
действительно включает время создания. Нет только никакого определения st_anything для элемента os.stat()
, который содержит время.
Так пробуют это:
os.stat('feedparser.py')[8]
Сравнивают это с Вашим создавать дату на файле в ls-lah
, Они должны быть тем же.
Лучшая функция для этого - 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)