From 2e17dbce55bc342dcb66dcd0ef1d5a9ceba1764c Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Tue, 29 Mar 2016 20:56:54 +0200 Subject: [PATCH] Adds a uopen function able to open transparently a local or a remote file compressed or not --- python/obitools3/files/universalopener.pxd | 5 +++++ python/obitools3/files/universalopener.pyx | 23 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 python/obitools3/files/universalopener.pxd create mode 100644 python/obitools3/files/universalopener.pyx diff --git a/python/obitools3/files/universalopener.pxd b/python/obitools3/files/universalopener.pxd new file mode 100644 index 0000000..7743db6 --- /dev/null +++ b/python/obitools3/files/universalopener.pxd @@ -0,0 +1,5 @@ +#cython: language_level=3 + +from .uncompress cimport CompressedFile + +cpdef CompressedFile uopen(str name, mode=?) \ No newline at end of file diff --git a/python/obitools3/files/universalopener.pyx b/python/obitools3/files/universalopener.pyx new file mode 100644 index 0000000..3aefb92 --- /dev/null +++ b/python/obitools3/files/universalopener.pyx @@ -0,0 +1,23 @@ +#cython: language_level=3 + +''' +Created on 25 mars 2016 + +@author: coissac +''' + +from urllib.request import urlopen + + +cpdef CompressedFile uopen(str name, mode='r'): + cdef CompressedFile c + + try: + f = urlopen(name) + except ValueError: + f = open(name,mode) + + c = CompressedFile(f) + + return c + \ No newline at end of file