[Tutor] [HELP]how to test properties of a file
Nick Lunt
nick at javacat.f2s.com
Mon Apr 4 23:54:40 CEST 2005
I've gotten into the habit of just using the os.?_OK stuff.
eg
>>> import os
>>> os.access('/', os.W_OK)
False
>>> os.access('/tmp', os.W_OK)
True
Thats gotta be simple if I understand it lol :)
Nick .
Alan Gauld wrote:
>>The simplest, IMHO, is :
>>
>>try:
>> f = file(filename, "w")
>> [...]
>>except IOError:
>> print "The file is not writable"
>>
>>Of course, not that this method empty the file if it is writable !
>>
>>
>The
>
>
>>best is to just put your IO code in such a try block ... That way,
>>you're sure the file has the right mode.
>>
>>
>
>Its not really the simplest, its not efficient and it might be
>dangerous
>if the file is not empty. At the very least open using 'a' to avoid
>obliterating the file!!
>
>However the os.stat function and stat module do what you want safely
>and more comprehensively:
>
>-----------------------------------
>Help on module stat:
>
>NAME
> stat - Constants/functions for interpreting results of
> os.stat() and os.lstat().
>
>FILE
> /usr/lib/python2.3/stat.py
>
>DESCRIPTION
> Suggested usage: from stat import *
>
>DATA
> ST_ATIME = 7
> ST_CTIME = 9
> ST_DEV = 2
> ST_GID = 5
> ST_INO = 1
> ST_MODE = 0
> ST_MTIME = 8
> ST_NLINK = 3
> ST_SIZE = 6
> ST_UID = 4
> S_ENFMT = 1024
>
>-----------------------------------------
>
>The constants above are the indices into the tuple returned by
>os.stat()
>That will tell you most of the things you need to know,
>check the docs to find out what they all mean.
>For your purposes the important one is ST_MODE.
>
>So
>
>import os
>from stat import *
>status = os.stat('somefile.txt')[ST_MODE]
>if status & S_IWRITE: print 'writable'
>elif staus & S_IREAD: print 'readable'
>else: print 'status is ', status
>
>Notice you have to use bitwise AND (&) to extract the status bits.
>
>HTH
>
>Alan G.
>
>_______________________________________________
>Tutor maillist - Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
>
>
>
More information about the Tutor
mailing list