Python2.4 и 2.6 ведут себя по-разному для os.path.getmtime () в Windows - PullRequest
4 голосов
/ 24 декабря 2009

Получение двух разных значений времени модификации при расчете из разных версий Python в Windows XP.

python2.4

C:\Copy of elisp>c:\python24\python
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.getmtime("auto-complete-emacs-lisp.el")
1251684178
>>> ^Z

python2.6

C:\Copy of elisp>C:\Python26\python
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.getmtime("auto-complete-emacs-lisp.el")
1251687778.0
>>>

Существует разница в 3600 секунд, сообщаемая Python2.6 и Python2.4.

В чем причина этого странного поведения?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2009

Это ошибка в реализации Microsoft стандартной библиотеки C. Python 2.4 раньше использовал вызов stdlib fstat для получения информации о файле и, следовательно, мог закончить один час в локалях, которые используют DST.

В Python 2.5 и более поздних версиях os.stat вызывает прямой API только для Win32 для получения информации о файле при работе в Windows, что приводит к правильному выводу. Подробнее см. .

2 голосов
/ 24 декабря 2009

Разница составляет 3600 секунд ...

Это должен быть кикер. Это проблема часового пояса, чисто и просто.

Теперь все, что вам нужно сделать, это выяснить, почему 2.4 и 2.6 используют различную информацию о часовом поясе: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...