Неправильная дата Python для некоторых файлов

1

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
Теги:
datetime
zipfile

2 ответа

1
Лучший ответ

Спасибо за вашу помощь "Нед Батчелдер", высоко оценили.

Это самый близкий ответ, который я могу найти в моем вопросе, и, согласно разработчикам 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, заключается в том, что при извлечении файла он обновляет время "Дата изменения" до текущей даты и времени, а не сохраняет исходную дату и время файла, который извлекается.

1

Звучит как проблема экономии дневного света. Вы находите, что файлы за полгода отключены на час, а файлы в другой половине года верны?

  • 0
    Да. Что можно сделать, чтобы решить проблему?
  • 0
    У меня установлены все последние обновления для XP, включая все обновления DST. У меня включен DST в XP. Я также попробовал это на двух других рабочих станциях, одна из которых была сервером 2003 года с такими же результатами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню