check if directory is writable in a portable way

Tim Golden mail at timgolden.me.uk
Tue Feb 28 05:50:51 EST 2012


On 28/02/2012 10:07, Andrea Crotti wrote:
> How should I check if I can create files in a directory?
>
> I tried to simply check if the directory is writeable with this function:
>
> def is_writable(name):
> """Return true if the file is writable from the current user
> """
> return os.access(name, os.W_OK)
>
> but that doesn't work at all on Windows, because for example if I create
> a new directory
> and do os.access(dirpath, os.W_OK) it returns false, even if I can
> create files inside without problems.
>
> So maybe the only solution that works is something like
> try:
> open(path.join('temp', 'w'))
> except OsError:
> return False
> else:
> os.remove(path.join('temp'))
> return True
>
> would it make sense?


This is remarkably complicated to do on Windows by
checking Security APIs etc. If the try:except dance
works for you, I recommend that you use it. (In the
past, people who have asked this question have not
wanted to use try-except because they didn't want the
overhead of creating even a zero-length file)

TJG



More information about the Python-list mailing list