2010-09-08 21 views
1

Python 3.1.2
Windows XP SP3Python Date de modification incorrecte pour certains fichiers

Je me présente un problème avec certains fichiers et leurs horodatages en python. J'ai un tas de fichiers dans un répertoire que j'ai reçu d'une source externe. Ce n'est pas tous les fichiers avec lesquels j'ai un problème, mais pour certains fichiers, python montre une différence d'une heure par rapport à l'explorateur ou au show cmd sous XP. Je vois spécifiquement ce problème en utilisant le module zipfile dans lequel, après qu'un fichier soit zippé, l'horodatage "date modified" est changé en ce que python interprète comme indiqué ci-dessous.

CMD - avant zipper

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

contenu de la liste de fichier zip après passer comme un éclair en utilisant le module de 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 - après l'extraction du fichier 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 

Répondre

1

Merci pour votre aide "Ned Batchelder", très appréciée.

Ceci est la réponse la plus proche que j'ai pu trouver à ma question et selon les développeurs python c'est un comportement normal et acceptable voir le thread suivant http://bytes.com/topic/python/answers/655606-python-2-5-1-broken-os-stat-module Cependant, dans ce fil, ils se réfèrent spécifiquement au module os.stat. Ils disent essentiellement que la différence d'heure a à voir avec la façon dont Windows vs Python calcule l'heure DST et que Windows et Python sont corrects.

Pour résoudre mon problème, j'ai depuis utilisé tarfile pour d'abord tarer tous mes fichiers, puis utilisé zipfile pour compresser mon fichier tar. Le module tarfile préserve correctement les horodatages des fichiers. L'autre problème que j'ai trouvé avec le module zipfile est que lors de l'extraction d'un fichier il met à jour l'heure "Date Modified" à la date et l'heure actuelles plutôt que de préserver la date et l'heure d'origine du fichier en cours d'extraction.

1

Sonne comme une question de l'heure d'été. Trouvez-vous que les fichiers de la moitié de l'année sont en retard d'une heure et que les fichiers de l'autre moitié de l'année sont corrects?

+0

Oui. Que peut-on faire pour résoudre le problème? – spaghettiwestern

+0

J'ai toutes les dernières mises à jour pour XP installé, y compris toutes les mises à jour DST. J'ai DST activé dans XP. J'ai également essayé ceci sur deux autres postes de travail dont un était un serveur 2003 avec les mêmes résultats. – spaghettiwestern