Eryk Sun <eryk...@gmail.com> added the comment:

For example, the named-pipe filesystem (NPFS), doesn't return timestamps for 
pipes in the directory listing, so the timestamps are all 0 (i.e. 1601-01-01):

    >>> write_time = win32file.FindFilesW('//./pipe/*')[0][3]
    >>> format(write_time, '%Y-%m-%d %H:%M')
    '1601-01-01 00:00'

    >>> next(os.scandir('//./pipe')).stat().st_mtime
    -11644473600.0

I agree that a zero-valued NT timestamp should be converted to a zero-valued 
Unix timestamp. No one has a file that was created, modified, changed, or 
accessed in 1601.

As mentioned above, the 1601 date doesn't roundtrip in Windows as a Unix 
timestamp since dates before the Unix epoch aren't supported:

    >>> write_time.timestamp()
    -11644473600.0
    >>> datetime.fromtimestamp(write_time.timestamp())
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    OSError: [Errno 22] Invalid argument

----------
components: +Library (Lib) -Interpreter Core
nosy: +paul.moore
title: Invalid timestamps reported by os.stat() when Windows FILETIME 
structures are mistakenly reset. -> zero-valued timestamps are mishandled by 
os.stat() in Windows
versions: +Python 3.10, Python 3.8, Python 3.9 -Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue23946>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to