3 import os.path as _os_path
6 """Openers by file extention.
8 Values should be callables such that::
10 for line in opener(filename, mode):
20 def open(filename, openers=None):
21 """Utility method that decompresses files based on their extension.
23 Uses ``OPENERS`` to determine the appropriate opener for the
24 file's extension. If the extension is not listed in ``OPENERS``,
25 fall back to the ``open`` builtin.
29 extension = _os_path.splitext(filename)[-1]
30 opener = openers.get(extension, __builtin__.open)
31 return opener(filename, 'r')