Неправильная дата Python для некоторых файлов - PullRequest
2 голосов
/ 08 сентября 2010

Python 3.1.2
Windows XP SP3

У меня проблема с некоторыми файлами и их временными метками в python.У меня есть куча файлов в каталоге, которые я получил из внешнего источника.Это не каждый файл, с которым у меня проблемы, но для некоторых файлов python показывает разницу в часах по сравнению с тем, что показывают в XP или в XPd.Я специально вижу эту проблему при использовании модуля 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-файла после архивирования с использованием модуля Python zipfile

>>>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

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

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

Это самый близкий ответ, который я смог найти на мой вопрос, и, по словам разработчиков Python, это нормальное и приемлемое поведение, см. Следующую ветку http://bytes.com/topic/python/answers/655606-python-2-5-1-broken-os-stat-module Однако в этой теме они ссылаются конкретно на модуль os.stat.Они в основном говорят, что разница в часах связана с тем, как Windows vs Python вычисляет время перехода на летнее время, и что и Windows, и Python являются правильными.

Для решения моей проблемы я с тех пор использовал tarfile для первого tar всех моих файлови затем использовал zipfile, чтобы сжать мой tarfile.Модуль tarfile правильно сохраняет временные метки файлов.Другая проблема, которую я обнаружил с модулем zipfile, заключается в том, что при извлечении файла он обновляет время «Дата изменения» до текущей даты и времени, а не сохраняет первоначальные дату и время извлекаемого файла.

1 голос
/ 08 сентября 2010

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

...