Is it possible to set the date/time of a directory in windows with Python? If so how?

Roger Upole rupole at hotmail.com
Sat May 13 05:35:43 EDT 2006


"ToddLMorgan" <ToddLMorgan at gmail.com> wrote in message news:1147509953.594320.172890 at d71g2000cwd.googlegroups.com...
> I'm trying to set any of the dates (create, modification, access) of a
> directory under windows with python.
>
> I'm trying to do this as I'm trying to write a unittest for a directory
> cleaning script I'm writing (ie I need the test to set the create/mod
> time for some of the directories so that I can be sure that the script
> works properly - as it picks dirs based upon their age).
>
> I've tried using the utime( path, times). That doesn't work as the doco
> states
> "Whether a directory can be given for path depends on whether the
> operating system implements directories as files (for example, Windows
> does not)."
>
> So that doesn't work.
>
> So I tried mark hammonds win32 extensions with something like this
>
> import win32file, win32con, pywintypes
> filehandle = win32file.CreateFile(file,
> win32file.GENERIC_WRITE,win32file.FILE_SHARE_WRITE,
> None,win32con.OPEN_ALWAYS, 0, None)
> nowWin32=pywintypes.Time(theTime)
> win32file.SetFileTime(filehandle, nowWin32, nowWin32, nowWin32)
>
> which works fine for files but fails with "Access Denied" when I invoke
> the CreateFile with a directory. This seems to occur no matter the
> combination of READ or WRITE I choose for the parameters.
>
> So does anyone have any useful suggestions (other than not using
> windows)?
>
> I've thought of a couple of reallly nasty solutions:
> 1. Temporarily alter the underlying system clock back to the required
> time and create the directory then resetting it back again afterwards.
> 2. Create the required directory in some form of virtual filesystem -
> eg Zip file, rar archive, tar etc. Then extract it to the real
> filesystem and hope windows honors the timestamps (untested at this
> point).
>
> None of those is particularly appealing.
>
> Thanks for listening.

To create a handle to a directory, you have to use
FILE_FLAG_BACK_SEMANTICS.

         Roger





More information about the Python-list mailing list