Python 3.1.2
Windows XP SP3
У меня возникла проблема с некоторыми файлами и их метками времени в python. У меня есть куча файлов в каталоге, который я получил от внешнего источника. Это не каждый файл, с которым я столкнулся, но для некоторых файлов python показывает часовую разницу с тем, что explorer или cmd показывают в XP. Я специально вижу эту проблему при использовании модуля zipfile, в котором после того, как файл застегнут, временная метка с измененной датой изменилась на то, что python интерпретирует ее, как показано ниже.
CMD - перед записью
C:\forms>dir /T:W "C:\forms\7aihy56.fmx"
02/02/2007 12:50 PM 195,148 7aihy56.fmx
1 File(s) 195,148 bytes
0 Dir(s) 985,520,533,504 bytes free
Python - получить mtime ctime
>>>import os
>>>st = os.stat("C:\\forms\\7aihy56.fmx")
>>>print(time.asctime(time.localtime(st[8])))
>>>print(time.asctime(time.localtime(st[9])))
Fri Feb 02 11:50:24 2007
Fri Feb 02 11:50:24 2007
Список содержимого zip файла после zipping с использованием zipfile-модуля python
>>>import datetime
>>>import zipfile
>>>zf = zipfile.ZipFile("C:\\daily_forms_auto_backup.zip")
>>>for info in zf.infolist():
>>> print(info.filename)
>>> print('\tModified:\t', datetime.datetime(*info.date_time))
>>> print
forms/7aihy56.fmx
Modified: 2007-02-02 11:50:24
CMD - после извлечения из zip файла
C:\forms>dir /T:W "C:\forms\7aihy56.fmx"
02/02/2007 11:50 AM 195,148 7aihy56.fmx
1 File(s) 195,148 bytes
0 Dir(s) 984,923,164,672 bytes free
Спасибо за вашу помощь "Нед Батчелдер", высоко оценили.
Это самый близкий ответ, который я могу найти в моем вопросе, и, согласно разработчикам python, это нормальное и приемлемое поведение, см. следующий поток http://bytes.com/topic/python/answers/655606-python-2-5-1-broken-os-stat-module Однако в этом потоке они специально относятся к модулю os.stat. Они в основном говорят, что разница в часах связана с тем, как Windows vs Python вычисляет время DST и что как Windows, так и Python верны.
Чтобы решить мою проблему, с тех пор я использовал tarfile для первого tar всех моих файлов, а затем использовал zipfile для сжатия моего tarfile. Модуль tarfile сохраняет отметки времени файла правильно. Другая проблема, которую я обнаружил с модулем zipfile, заключается в том, что при извлечении файла он обновляет время "Дата изменения" до текущей даты и времени, а не сохраняет исходную дату и время файла, который извлекается.
Звучит как проблема экономии дневного света. Вы находите, что файлы за полгода отключены на час, а файлы в другой половине года верны?