[Tutor] try and file existence

Mark Lawrence breamoreboy at yahoo.co.uk
Sat Aug 15 04:18:16 CEST 2015


On 15/08/2015 02:28, Clayton Kirkwood wrote:
> try:
>      fp = open( user_preferences )
> except( PermissionError ):

You need a pass statement here if you don't intend doing anything with 
the error, but see my comments at the bottom.

> else:
>      with open(user_preferences ) as f:
>
> I originally only had the bottom open statement. Ran but file didn't exist,
> and my run failed with file doesn't exist. I figured I'd check to see if the
> file existed. This is one of those situations where a search of
> documentation for fd_exist (which I thought I'd seen once), or exist turns
> up either nothing or nothing relevant. I finally found that the try: clause
> with the open statement might help and I copied the snippet to my code. I am
> getting an indentation error: expected an indent block. What is wrong, and
> what is the best way to find out if a file exists?
>
> TIA,
>
> Clayton
>

There's nothing to stop you using multiple except statements with one 
try.  So something like this is how I'd go about it.

try:
     with open(user_preferences) as f:
     do_something()
except PermissionError:
     whatever()
except FileNotFoundError:
     oh_heck()
etc.

Seee this for an explanation of exception handling 
https://docs.python.org/3/tutorial/errors.html#handling-exceptions.  A 
full list of the exceptions you'd need to consider is here 
https://docs.python.org/3/library/exceptions.html#os-exceptions

-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence



More information about the Tutor mailing list