check if directory is writable in a portable way

Tim Golden mail at timgolden.me.uk
Tue Feb 28 08:33:52 EST 2012


On 28/02/2012 12:01, Andrea Crotti wrote:
> On 02/28/2012 11:34 AM, Tim Chase wrote:
>> On 02/28/12 04:07, Andrea Crotti wrote:
>>> How should I check if I can create files in a directory?
>>>
>>> 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
>>
>> It depends on the system & location. It's possible to set up
>> directories with permissions that allow you to create files but not
>> delete them, in which case you'd either (1) create the file and
>> possibly fail on subsequent tests because the file already exists; or
>> (2) litter the directory with tmpnam()-like results that you were
>> unable to delete.
>>
>> It's ugly, I've encountered it, and haven't found a good universal
>> solution myself.
>>
>> -tkc
>>
>
> That's really ugly right, didn't think about this possibility.
> Well it's not a really critical part of my code, so I guess it's fine
> with the try-except dance..
>
> But isn't there (or should there be) a windows-related library that
> abstracts this horrible things?

Well I maintain winsys [1] which does help out in admin-y tasks
in general on Windows, but I'm afraid I've never had the need
to scratch this particular itch, and the API solution is messier
than you might think, and more fiddly to get right. If I ever
get enough moments together I might do it, but patches are
always looked upon kindly :)

TJG

[1] https://github.com/tjguk/winsys



More information about the Python-list mailing list