2009-12-24 3 views
4

Windows XP에서 서로 다른 Python 버전에서 계산할 때 두 가지 수정 시간이 달라집니다.Windows에서 os.path.getmtime()에 대해 Python2.4 및 2.6이 다르게 동작합니다.

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

Python2.6 및 Python2.4 의해보고 3,600초의 차이가있다.

이 이상한 동작의 이유는 무엇입니까? 3,600초의 차이가 있습니다

+0

실제로 어느 쪽이 맞습니까? 나는 2.6을 추측하고 있냐? – DNS

+0

Python2.6이 정확함 –

답변

2

:-) 다른 시간대 정보를 사용하는 이유를 찾을 수있다. 파이썬 2.4는 stdlib fstat 호출을 사용하여 파일 정보를 얻었으므로 DST를 사용하는 로케일에서 1 시간이 걸릴 수 있습니다.

파이썬 2.5 이상에서는 os.stat이 직접 Win32 전용 API를 호출하여 Windows에서 실행될 때 파일 정보를 가져 와서 올바른 결과를 얻습니다. 자세한 내용은 this thread을 참조하십시오.

+0

또한이 메시지는 http://coding.derkeiler.com/Archive/Python/comp입니다. .lang.python/2007-06/msg00300.html – atzz

2

...

이 키커해야한다. 그것은 순수하고 단순한 시간대 문제입니다.

지금 당신이해야 할 모든 2.4 및 2.6 그것은 C 표준 라이브러리의 Microsoft의 구현에서 버그

+1

"Python 2.x의 새로운 기능"페이지에는 timezone 또는 mtime() 동작의 변경 사항이 언급되어 있지 않으므로 MSC의 이전 트릭을 MS로 추측 할 것입니다. v .1310 및 v.1500. 가능하다면 동일한 버전을 가진 각각의 사용자 정의 빌드가 그 것인지를 확인하는 한 가지 방법입니다. –

+0

이상하게도 충분히 그물에 대한 몇 가지 게시물이 이것에 대해 불평합니다 : http://www.velocityreviews.com/forums/t351183-os-path-getmtime-on-winxp.html. – paxdiablo

+0

그리고 http://coding.derkeiler.com/Archive/Python/comp.lang.python/2007-06/msg00000.html – paxdiablo

관련 문제