Barry Scott <ba...@barrys-emacs.org>: > os.path.exists() is not special and I don't think should be be changed.
You are right that os.path.exists() might be logically tied to other os.* facilities. The question is, should the application be cognizant of the seam between the standard library and the operating system kernel? When a Linux system call contains an illegal value, it responds with errno=EINVAL. In Python, that's represented by the OSError exception with e.errno=EINVAL. However, when Python encounters an illegal value itself, it usually raises a ValueError. Is it useful for the application to have to be prepared for OSError/EINVAL and ValueError separately? Or should the difference be paved over by Python? As it stands, os.path.exists() really means: the operating system doesn't have a reason to fail os.stat() on the pathname. Python intercedes with an exception if it can't even ask the operating system for its opinion. That dichotomy is not suggested by the os.path.exists() documentation. In fact, the whole point of os.path.* is to provide for an abstraction to isolate the application from the intricacies of the operating system specifics. BTW, I challenge you to find a test case that tests the proper behavior of an application if it encounters a pathname with a NUL in it. Or code that gracefully catches a ValueError from os.path.exists(). Marko -- https://mail.python.org/mailman/listinfo/python-list