I have this standard line:
export = open(self.exportFileName , 'w')
'exportFileName' is a full path given by the user. If the user gives an
illegal path or filename the following exception is raised:
"IOError: [Errno 2] No such file or directory: /some/path/file.txt"
So at the moment I do this:
try:
export = open(self.exportFileName , 'w')
export.write("Something")
export.close()
except IOError:
# calling an error handling method.
Now, this works but of course it catches every IOError, and I can not
figure out how to restrict it to only catch the "[Errno 2]"?
Thanks
Tina
There's an example that uses the error number:
http://docs.python.org/tut/node10.html#SECTION0010300000000000000000
Thomas
--
sinature: http://nospam.nowire.org/signature_usenet.png
You can get the 2 as the errno exception attribute. BTW, 2 == errno.ENOENT
try:
export = open(self.exportFileName , 'w')
except IOError, e:
if e.errno==errno.ENOENT:
# handle the "No such file or directory" error
# calling an error handling method.
See http://docs.python.org/lib/module-exceptions.html
--
Gabriel Genellina
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
Recent Ramblings http://holdenweb.blogspot.com
The try first approach is better for at least two reasons:
1) It saves you an extra stat() on the disk, which can be really
important for some filesystems I use :)
2) It is atomic. If os.path.isfile() returns True but the file is
deleted before you open it, you are still going to have to handle the
exception.
--
Michael Hoffman
In general, this is laborious, tedious, and possibly even platform
dependent. Then you still need to wrap the open call in try/accept. Why
bother?
In particular, (1) please explain how os.path.split helps with existence
testing:
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
| >>> import os.path
| >>> os.path.split(r'no\such\path\nothing.nix')
('no\\such\\path', 'nothing.nix')
(2) please explain why you avoided mentioning os.path.exists.
Perfect! Just what I was looking for. Thank you! :)
Tina