Problems wth os.stat().st_mtime on Mac
"Martin v. Löwis"
martin at v.loewis.de
Fri Sep 29 18:52:53 EDT 2006
Michael Glassford schrieb:
> Although not mentioned in the Python 2.5 News, apparently there was a
> similar change on Mac that I'm having some problems with. On the Mac,
> just as on Windows, os.stat().st_mtime now returns a float instead of an
> integer.
It's isn't really new; os.stat_float_times was introduced in Python 2.3.
What changed in 2.5 is that it is now true. See
http://docs.python.org/whatsnew/modules.html
> a) Why the difference between machines?
You really have to delve into OSX to answer this question. Several
reasons are possible:
- there is a change in the operating system implementations
- you are using different Python versions
- you are using different file systems
> b) Why do most files on this machine have ".0", while some (generally
> those I created myself using Python 2.5, I think) don't?
Hard to tell. Maybe the software that created those files explicitly
set a time stamp on them, and failed to use the API that supports
subsecond resolution in setting those time stamps.
> I understand how the results can be different: the os.stat() function
> returns a posix.stat_result object, which gives back an integer value
> for the mtime if you call __str__ or __repr__, or if you iterate on it;
> and a float if you get the st_mtime attribute. But I would consider it a
> bug that the results are different: a float should be returned in either
> case.
That's for backwards compatibility: You shouldn't use the tuple
interface anymore, but use st_mtime for new code. This will always
be a float. OTOH, the tuple interface will continue to return
integers forever (or until the tuple interface is removed in Python
3000), as old applications will break. This breakage isn't theoretical:
when I introduced float into st_mtime, I first made the tuple be
float also, and it broke several applications within a week (even
though that code was just in the CVS trunk, and not released yet).
Regards,
Martin
More information about the Python-list
mailing list