diff --git a/mutalyzer/File.py b/mutalyzer/File.py index add6e5d4ef000980f7ccf9d41b585ce0ff89bb32..772d2002e5cd5fed3ba389ca36786299c319da7b 100644 --- a/mutalyzer/File.py +++ b/mutalyzer/File.py @@ -170,7 +170,13 @@ class File() : handle = _UniversalNewlinesByteStreamIter(handle, encoding=encoding, buffer_size=BUFFER_SIZE) - buf = handle.read(BUFFER_SIZE) + try: + buf = handle.read(BUFFER_SIZE) + except UnicodeDecodeError: + self.__output.addMessage(__file__, 3, 'EBPARSE', + 'Could not decode file (using %s encoding).' + % encoding) + return None # Default dialect dialect = 'excel' @@ -196,8 +202,14 @@ class File() : reader = csv.reader(handle, dialect) ret = [] - for i in reader: - ret.append([c.decode('utf-8') for c in i]) + try: + for i in reader: + ret.append([c.decode('utf-8') for c in i]) + except UnicodeDecodeError: + self.__output.addMessage(__file__, 3, 'EBPARSE', + 'Could not decode file (using %s encoding).' + % encoding) + return None return ret #__parseCsvFile diff --git a/mutalyzer/Retriever.py b/mutalyzer/Retriever.py index 4cfaf6428113af4bf1c0a00ea88ccdace7d984a3..e514ab96bc3a0cd1519513acaedde13afcb9c584 100644 --- a/mutalyzer/Retriever.py +++ b/mutalyzer/Retriever.py @@ -114,7 +114,13 @@ class Retriever(object) : encoding = 'utf-8' if not util.is_utf8_alias(encoding): - raw_data = raw_data.decode(encoding).encode('utf-8') + try: + raw_data = raw_data.decode(encoding).encode('utf-8') + except UnicodeDecodeError: + self._output.addMessage(__file__, 4, 'ENOPARSE', + 'Could not decode file (using %s encoding).' + % encoding) + return None # Compress the data to save disk space. comp = bz2.BZ2Compressor() @@ -368,7 +374,8 @@ class GenBankRetriever(Retriever): "number to reduce downloading overhead." % unicode(record.id)) #if - self._write(raw_data, outfile) + if not self._write(raw_data, outfile): + return None return outfile, GI #write