diff --git a/SickBeard.py b/SickBeard.py
index 41a03f743ba39db4d13fb4b41fcb81c6a2b485f3..a6662d489a0fb7620141214d64f18f487b039e1d 100755
--- a/SickBeard.py
+++ b/SickBeard.py
@@ -390,7 +390,7 @@ class SickRage(object):
             pid = os.fork()  # @UndefinedVariable - only available in UNIX
             if pid != 0:
                 os._exit(0)
-        except OSError, e:
+        except OSError as e:
             sys.stderr.write(u"fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
             sys.exit(1)
 
@@ -408,7 +408,7 @@ class SickRage(object):
             pid = os.fork()  # @UndefinedVariable - only available in UNIX
             if pid != 0:
                 os._exit(0)
-        except OSError, e:
+        except OSError as e:
             sys.stderr.write(u"fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
             sys.exit(1)
 
@@ -419,7 +419,7 @@ class SickRage(object):
 
             try:
                 file(self.PIDFILE, 'w').write("%s\n" % pid)
-            except IOError, e:
+            except IOError as e:
                 logger.log_error_and_exit(
                     u"Unable to write PID file: " + self.PIDFILE + " Error: " + str(e.strerror) + " [" + str(
                         e.errno) + "]")
@@ -463,7 +463,7 @@ class SickRage(object):
                 curShow = TVShow(int(sqlShow["indexer"]), int(sqlShow["indexer_id"]))
                 curShow.nextEpisode()
                 sickbeard.showList.append(curShow)
-            except Exception, e:
+            except Exception as e:
                 logger.log(
                     u"There was an error creating the show in " + sqlShow["location"] + ": " + str(e).decode('utf-8'),
                     logger.ERROR)
diff --git a/sickbeard/browser.py b/sickbeard/browser.py
index 021adc81c76fa8e063d450141b1f737cae20afb9..7cba8f7927a1e41fb5d46a35ff907616770600d2 100644
--- a/sickbeard/browser.py
+++ b/sickbeard/browser.py
@@ -106,7 +106,7 @@ def foldersAtPath(path, includeParent=False, includeFiles=False):
 
     try:
         fileList = getFileList(path, includeFiles)
-    except OSError, e:
+    except OSError as e:
         logger.log(u"Unable to open " + path + ": " + repr(e) + " / " + str(e), logger.WARNING)
         fileList = getFileList(parentPath, includeFiles)
 
diff --git a/sickbeard/clients/generic.py b/sickbeard/clients/generic.py
index ca74035d81149482073f0585d87d4cc1fa635937..34a5d7ee08f5dce9432bcaa141435dfaa283b8b3 100644
--- a/sickbeard/clients/generic.py
+++ b/sickbeard/clients/generic.py
@@ -45,19 +45,19 @@ class GenericClient(object):
         try:
             self.response = self.session.__getattribute__(method)(self.url, params=params, data=data, files=files,
                                                                   timeout=120, verify=False)
-        except requests.exceptions.ConnectionError, e:
+        except requests.exceptions.ConnectionError as e:
             logger.log(self.name + u': Unable to connect ' + str(e), logger.ERROR)
             return False
         except (requests.exceptions.MissingSchema, requests.exceptions.InvalidURL):
             logger.log(self.name + u': Invalid Host', logger.ERROR)
             return False
-        except requests.exceptions.HTTPError, e:
+        except requests.exceptions.HTTPError as e:
             logger.log(self.name + u': Invalid HTTP Request ' + str(e), logger.ERROR)
             return False
-        except requests.exceptions.Timeout, e:
+        except requests.exceptions.Timeout as e:
             logger.log(self.name + u': Connection Timeout ' + str(e), logger.WARNING)
             return False
-        except Exception, e:
+        except Exception as e:
             logger.log(self.name + u': Unknown exception raised when send torrent to ' + self.name + ': ' + str(e),
                        logger.ERROR)
             return False
@@ -208,7 +208,7 @@ class GenericClient(object):
             if result.priority != 0 and not self._set_torrent_priority(result):
                 logger.log(self.name + u': Unable to set priority for Torrent', logger.ERROR)
 
-        except Exception, e:
+        except Exception as e:
             logger.log(self.name + u': Failed Sending Torrent', logger.ERROR)
             logger.log(self.name + u': Exception raised when sending torrent: ' + str(result) + u'. Error: ' + str(e), logger.DEBUG)
             return r_code
diff --git a/sickbeard/db.py b/sickbeard/db.py
index 92d5e08189b2a6bcfe2717286c783a42941ed56a..ee4924fc34a76ac1871eb97eecf495db7f1682cc 100644
--- a/sickbeard/db.py
+++ b/sickbeard/db.py
@@ -151,7 +151,7 @@ class DBConnection(object):
 
                     # finished
                     break
-                except sqlite3.OperationalError, e:
+                except sqlite3.OperationalError as e:
                     sqlResult = []
                     if self.connection:
                         self.connection.rollback()
@@ -162,7 +162,7 @@ class DBConnection(object):
                     else:
                         logger.log(u"DB error: " + ex(e), logger.ERROR)
                         raise
-                except sqlite3.DatabaseError, e:
+                except sqlite3.DatabaseError as e:
                     sqlResult = []
                     if self.connection:
                         self.connection.rollback()
@@ -202,7 +202,7 @@ class DBConnection(object):
 
                     # get out of the connection attempt loop since we were successful
                     break
-                except sqlite3.OperationalError, e:
+                except sqlite3.OperationalError as e:
                     if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
                         logger.log(u"DB error: " + ex(e), logger.WARNING)
                         attempt += 1
@@ -210,7 +210,7 @@ class DBConnection(object):
                     else:
                         logger.log(u"DB error: " + ex(e), logger.ERROR)
                         raise
-                except sqlite3.DatabaseError, e:
+                except sqlite3.DatabaseError as e:
                     logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR)
                     raise
 
@@ -389,7 +389,7 @@ def _processUpgrade(connection, upgradeClass):
         logger.log(u"Database upgrade required: " + prettyName(upgradeClass.__name__), logger.DEBUG)
         try:
             instance.execute()
-        except sqlite3.DatabaseError, e:
+        except sqlite3.DatabaseError as e:
             # attemping to restore previous DB backup and perform upgrade
             try:
                 instance.execute()
diff --git a/sickbeard/event_queue.py b/sickbeard/event_queue.py
index a2a56e93cedac640f64da6b4d7a2df35a1829b6e..8f60d3f4e2d859456933c0f00958c52554e2e4f8 100644
--- a/sickbeard/event_queue.py
+++ b/sickbeard/event_queue.py
@@ -46,7 +46,7 @@ class Events(threading.Thread):
 
             # exiting thread
             self.stop.clear()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR)
             logger.log(repr(traceback.format_exc()), logger.DEBUG)
 
diff --git a/sickbeard/failed_history.py b/sickbeard/failed_history.py
index 47c53365e56e6a20ea1c493acdc76ce92f48d236..f504558cd7fa0866f696d02e2dd7db94815ff07a 100644
--- a/sickbeard/failed_history.py
+++ b/sickbeard/failed_history.py
@@ -137,7 +137,7 @@ def revertEpisode(epObj):
                 epObj.status = WANTED
                 epObj.saveToDB()
 
-    except EpisodeNotFoundException, e:
+    except EpisodeNotFoundException as e:
         logger.log(u"Unable to create episode, please set its status manually: " + ex(e),
                    logger.WARNING)
 
@@ -157,7 +157,7 @@ def markFailed(epObj):
             epObj.status = Quality.compositeStatus(FAILED, quality)
             epObj.saveToDB()
 
-    except EpisodeNotFoundException, e:
+    except EpisodeNotFoundException as e:
         logger.log(u"Unable to get episode, please set its status manually: " + ex(e), logger.WARNING)
 
     return log_str
diff --git a/sickbeard/metadata/generic.py b/sickbeard/metadata/generic.py
index c4d22bc051a73f2f11846c96e02d5ba3baefafaf..b2e11566c16344220b5f9302d0fbcb9f551c8a2d 100644
--- a/sickbeard/metadata/generic.py
+++ b/sickbeard/metadata/generic.py
@@ -288,7 +288,7 @@ class GenericMetadata(object):
                 helpers.chmodAsParent(nfo_file_path)
 
                 return True
-            except IOError, e:
+            except IOError as e:
                 logger.log(
                     u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                     logger.ERROR)
@@ -415,7 +415,7 @@ class GenericMetadata(object):
             data.write(nfo_file, encoding='UTF-8')
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
@@ -459,7 +459,7 @@ class GenericMetadata(object):
             data.write(nfo_file, encoding='UTF-8')
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
@@ -707,7 +707,7 @@ class GenericMetadata(object):
             outFile.write(image_data)
             outFile.close()
             helpers.chmodAsParent(image_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(
                 u"Unable to write image to " + image_path + " - are you sure the show folder is writable? " + ex(e),
                 logger.ERROR)
@@ -743,7 +743,7 @@ class GenericMetadata(object):
 
             t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS)
             indexer_show_obj = t[show_obj.indexerid]
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"Unable to look up show on " + sickbeard.indexerApi(
                 show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING)
             logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG)
@@ -813,7 +813,7 @@ class GenericMetadata(object):
 
             t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS)
             indexer_show_obj = t[show_obj.indexerid]
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"Unable to look up show on " + sickbeard.indexerApi(
                 show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING)
             logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG)
@@ -867,7 +867,7 @@ class GenericMetadata(object):
 
             t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS)
             indexer_show_obj = t[show_obj.indexerid]
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"Unable to look up show on " + sickbeard.indexerApi(
                 show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING)
             logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG)
@@ -946,7 +946,7 @@ class GenericMetadata(object):
                         logger.log(u"Invalid Indexer ID (" + str(indexer_id) + "), not using metadata file because it has TVRage info", logger.WARNING)
                         return empty_return
 
-        except Exception, e:
+        except Exception as e:
             logger.log(
                 u"There was an error parsing your existing metadata file: '" + metadata_path + "' error: " + ex(e),
                 logger.WARNING)
diff --git a/sickbeard/metadata/kodi_12plus.py b/sickbeard/metadata/kodi_12plus.py
index 2b1eda1500957a013d68517727595a8ad3903683..673c1faa6ffb15a226888ca3f90fe789a956a594 100644
--- a/sickbeard/metadata/kodi_12plus.py
+++ b/sickbeard/metadata/kodi_12plus.py
@@ -256,9 +256,9 @@ class KODI_12PlusMetadata(generic.GenericMetadata):
         try:
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR)
             return
diff --git a/sickbeard/metadata/mede8er.py b/sickbeard/metadata/mede8er.py
index f24e5f14c8cca9b570b043a63abab6b94692ae14..2f924f982f5628c569a1d346ab3a13af31d834ca 100644
--- a/sickbeard/metadata/mede8er.py
+++ b/sickbeard/metadata/mede8er.py
@@ -231,9 +231,9 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata):
 
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to TVDB while creating meta files - skipping - " + ex(e), logger.ERROR)
             return False
 
@@ -384,7 +384,7 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata):
             data.write(nfo_file)
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
@@ -429,7 +429,7 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata):
             data.write(nfo_file)
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
diff --git a/sickbeard/metadata/mediabrowser.py b/sickbeard/metadata/mediabrowser.py
index a917a4b47aa3354d0438e35710f72e89aa7de445..f053d00e51ce559c6409ef5c30b9f8cd90074f8a 100644
--- a/sickbeard/metadata/mediabrowser.py
+++ b/sickbeard/metadata/mediabrowser.py
@@ -424,9 +424,9 @@ class MediaBrowserMetadata(generic.GenericMetadata):
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
 
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR)
             return False
diff --git a/sickbeard/metadata/tivo.py b/sickbeard/metadata/tivo.py
index 2d8051db37fa8bd0f0ea398a8e2cb22be99808b9..0fe70790143f6645a8c5129df5f1eaf19b08bdbb 100644
--- a/sickbeard/metadata/tivo.py
+++ b/sickbeard/metadata/tivo.py
@@ -183,9 +183,9 @@ class TIVOMetadata(generic.GenericMetadata):
 
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(str(e))
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + str(e), logger.ERROR)
             return False
@@ -327,7 +327,7 @@ class TIVOMetadata(generic.GenericMetadata):
 
             helpers.chmodAsParent(nfo_file_path)
 
-        except EnvironmentError, e:
+        except EnvironmentError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
diff --git a/sickbeard/metadata/wdtv.py b/sickbeard/metadata/wdtv.py
index 34c9cb539ab1d263eba6a890a92a11784bc5d9cc..1fea81914b1b6507f352416c5c4df85aa70ca7a8 100644
--- a/sickbeard/metadata/wdtv.py
+++ b/sickbeard/metadata/wdtv.py
@@ -199,9 +199,9 @@ class WDTVMetadata(generic.GenericMetadata):
 
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR)
             return False
diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py
index 5284c09d8c28149ea91e898213952c1d5d55d64a..83f8becad1670c47401689c3d80f0225ac8daeb7 100644
--- a/sickbeard/name_parser/parser.py
+++ b/sickbeard/name_parser/parser.py
@@ -245,7 +245,7 @@ class NameParser(object):
                     except sickbeard.indexer_episodenotfound:
                         logger.log(u"Unable to find episode with date " + str(bestResult.air_date) + " for show " + bestResult.show.name + ", skipping", logger.WARNING)
                         episode_numbers = []
-                    except sickbeard.indexer_error, e:
+                    except sickbeard.indexer_error as e:
                         logger.log(u"Unable to contact " + sickbeard.indexerApi(bestResult.show.indexer).name + ": " + ex(e), logger.WARNING)
                         episode_numbers = []
 
diff --git a/sickbeard/notifiers/emby.py b/sickbeard/notifiers/emby.py
index f233ed75d538b1d824f058bc9df6e5b141f8826a..acfbcc300a187bee6a49d061d30c9772c2b6b7d6 100644
--- a/sickbeard/notifiers/emby.py
+++ b/sickbeard/notifiers/emby.py
@@ -63,7 +63,7 @@ class EMBYNotifier(object):
             logger.log(u'EMBY: HTTP response: ' + result.replace('\n', ''), logger.DEBUG)
             return True
 
-        except (urllib2.URLError, IOError), e:
+        except (urllib2.URLError, IOError) as e:
             logger.log(u'EMBY: Warning: Couldn\'t contact Emby at ' + url + ' ' + ex(e), logger.WARNING)
             return False
 
@@ -116,7 +116,7 @@ class EMBYNotifier(object):
                 logger.log(u'EMBY: HTTP response: ' + result.replace('\n', ''), logger.DEBUG)
                 return True
 
-            except (urllib2.URLError, IOError), e:
+            except (urllib2.URLError, IOError) as e:
                 logger.log(u'EMBY: Warning: Couldn\'t contact Emby at ' + url + ' ' + ex(e), logger.WARNING)
                 return False
 
diff --git a/sickbeard/notifiers/freemobile.py b/sickbeard/notifiers/freemobile.py
index bf9ac00b4bb0ae5a85aaad1c0adb145ec60a281d..75c42df2e4d4d506833c497f5ca6e38d8293ed3f 100644
--- a/sickbeard/notifiers/freemobile.py
+++ b/sickbeard/notifiers/freemobile.py
@@ -57,7 +57,7 @@ class FreeMobileNotifier(object):
         # send the request to Free Mobile
         try:
             urllib2.urlopen(req)
-        except IOError, e:
+        except IOError as e:
             if hasattr(e, 'code'):
                 if e.code == 400:
                     message = "Missing parameter(s)."
@@ -75,7 +75,7 @@ class FreeMobileNotifier(object):
                     message = "Server error. Please retry in few moment."
                     logger.log(message, logger.ERROR)
                     return False, message
-        except Exception, e:
+        except Exception as e:
                 message = u"Error while sending SMS: {0}".format(e)
                 logger.log(message, logger.ERROR)
                 return False, message
diff --git a/sickbeard/notifiers/growl.py b/sickbeard/notifiers/growl.py
index aa86c8aa6ec2672083679d0a1471d0920427f08a..94742af06023ea780ab7d448e93f45b071646ff7 100644
--- a/sickbeard/notifiers/growl.py
+++ b/sickbeard/notifiers/growl.py
@@ -148,7 +148,7 @@ class GrowlNotifier(object):
                         return self._send_growl(opts, message)
                     else:
                         return False
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"GROWL: Unable to send growl to " + opts['host'] + ":" + str(opts['port']) + " - " + ex(e), logger.WARNING)
                 return False
 
@@ -191,7 +191,7 @@ class GrowlNotifier(object):
 
         try:
             return self._send(opts['host'], opts['port'], register.encode(), opts['debug'])
-        except Exception, e:
+        except Exception as e:
             logger.log(u"GROWL: Unable to send growl to " + opts['host'] + ":" + str(opts['port']) + " - " + ex(e), logger.WARNING)
             return False
 
diff --git a/sickbeard/notifiers/kodi.py b/sickbeard/notifiers/kodi.py
index 2e9f36b022b508a27d5c2d6e43b1e88865ec5a13..2e5bd4ede13c97b534e7e50f3427df175c940e76 100644
--- a/sickbeard/notifiers/kodi.py
+++ b/sickbeard/notifiers/kodi.py
@@ -306,7 +306,7 @@ class KODINotifier(object):
             encSqlXML = urllib.quote(sqlXML, ':\\/<>')
             try:
                 et = etree.fromstring(encSqlXML)
-            except SyntaxError, e:
+            except SyntaxError as e:
                 logger.log(u"Unable to parse XML returned from KODI: " + ex(e), logger.ERROR)
                 return False
 
@@ -386,7 +386,7 @@ class KODINotifier(object):
 
             try:
                 response = urllib2.urlopen(req)
-            except (httplib.BadStatusLine, urllib2.URLError), e:
+            except (httplib.BadStatusLine, urllib2.URLError) as e:
                 if sickbeard.KODI_ALWAYS_ON:
                     logger.log(u"Error while trying to retrieve KODI API version for " + host + ": " + ex(e), logger.WARNING)
                 return False
@@ -397,11 +397,11 @@ class KODINotifier(object):
                 response.close()
                 logger.log(u"KODI JSON response: " + str(result), logger.DEBUG)
                 return result  # need to return response for parsing
-            except ValueError, e:
+            except ValueError as e:
                 logger.log(u"Unable to decode JSON: " + str(response.read()), logger.WARNING)
                 return False
 
-        except IOError, e:
+        except IOError as e:
             if sickbeard.KODI_ALWAYS_ON:
                 logger.log(u"Warning: Couldn't contact KODI JSON API at " + ss(url) + " " + ex(e), logger.WARNING)
             return False
diff --git a/sickbeard/notifiers/libnotify.py b/sickbeard/notifiers/libnotify.py
index 40a6c1c69ba63425362a224bcc35fec518412fd2..16e5d57941ff6982abcc2f18c7255c25de06486e 100644
--- a/sickbeard/notifiers/libnotify.py
+++ b/sickbeard/notifiers/libnotify.py
@@ -47,13 +47,13 @@ def diagnose():
     else:
         try:
             bus = dbus.SessionBus()
-        except dbus.DBusException, e:
+        except dbus.DBusException as e:
             return (u"<p>Error: unable to connect to D-Bus session bus: <code>%s</code>."
                     u"<p>Are you running SickRage in a desktop session?") % (cgi.escape(e),)
         try:
             bus.get_object('org.freedesktop.Notifications',
                            '/org/freedesktop/Notifications')
-        except dbus.DBusException, e:
+        except dbus.DBusException as e:
             return (u"<p>Error: there doesn't seem to be a notification daemon available: <code>%s</code> "
                     u"<p>Try installing notification-daemon or notify-osd.") % (cgi.escape(e),)
     return u"<p>Error: Unable to send notification."
diff --git a/sickbeard/notifiers/nmj.py b/sickbeard/notifiers/nmj.py
index 47e8309f1b927d96704f6edc19861ad5802f958e..c9ddbda4a096e2bbf387f2d8d45097aefdb42576 100644
--- a/sickbeard/notifiers/nmj.py
+++ b/sickbeard/notifiers/nmj.py
@@ -124,13 +124,13 @@ class NMJNotifier(object):
                 req = urllib2.Request(mount)
                 logger.log(u"Try to mount network drive via url: %s" % mount, logger.DEBUG)
                 handle = urllib2.urlopen(req)
-            except IOError, e:
+            except IOError as e:
                 if hasattr(e, 'reason'):
                     logger.log(u"NMJ: Could not contact Popcorn Hour on host %s: %s" % (host, e.reason), logger.WARNING)
                 elif hasattr(e, 'code'):
                     logger.log(u"NMJ: Problem with Popcorn Hour on host %s: %s" % (host, e.code), logger.WARNING)
                 return False
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"NMJ: Unknown exception: " + ex(e), logger.ERROR)
                 return False
 
@@ -151,13 +151,13 @@ class NMJNotifier(object):
             logger.log(u"Sending NMJ scan update command via url: %s" % updateUrl, logger.DEBUG)
             handle = urllib2.urlopen(req)
             response = handle.read()
-        except IOError, e:
+        except IOError as e:
             if hasattr(e, 'reason'):
                 logger.log(u"NMJ: Could not contact Popcorn Hour on host %s: %s" % (host, e.reason), logger.WARNING)
             elif hasattr(e, 'code'):
                 logger.log(u"NMJ: Problem with Popcorn Hour on host %s: %s" % (host, e.code), logger.WARNING)
             return False
-        except Exception, e:
+        except Exception as e:
             logger.log(u"NMJ: Unknown exception: " + ex(e), logger.ERROR)
             return False
 
@@ -165,7 +165,7 @@ class NMJNotifier(object):
         try:
             et = etree.fromstring(response)
             result = et.findtext("returnValue")
-        except SyntaxError, e:
+        except SyntaxError as e:
             logger.log(u"Unable to parse XML returned from the Popcorn Hour: %s" % e, logger.ERROR)
             return False
 
diff --git a/sickbeard/notifiers/nmjv2.py b/sickbeard/notifiers/nmjv2.py
index 9a4d57fddefb1db3d5d630cb4acb4f8faee31954..5ac7bfc3b9ee3039296ac8916909646769f9134d 100644
--- a/sickbeard/notifiers/nmjv2.py
+++ b/sickbeard/notifiers/nmjv2.py
@@ -93,7 +93,7 @@ class NMJv2Notifier(object):
                         sickbeard.NMJv2_DATABASE = DB_path
                         return True
 
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Warning: Couldn't contact popcorn hour on host %s: %s" % (host, e), logger.WARNING)
             return False
         return False
@@ -122,19 +122,19 @@ class NMJv2Notifier(object):
             time.sleep(300.0 / 1000.0)
             handle2 = urllib2.urlopen(req)
             response2 = handle2.read()
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Warning: Couldn't contact popcorn hour on host %s: %s" % (host, e), logger.WARNING)
             return False
         try:
             et = etree.fromstring(response1)
             result1 = et.findtext("returnValue")
-        except SyntaxError, e:
+        except SyntaxError as e:
             logger.log(u"Unable to parse XML returned from the Popcorn Hour: update_scandir, %s" % e, logger.ERROR)
             return False
         try:
             et = etree.fromstring(response2)
             result2 = et.findtext("returnValue")
-        except SyntaxError, e:
+        except SyntaxError as e:
             logger.log(u"Unable to parse XML returned from the Popcorn Hour: scanner_start, %s" % e, logger.ERROR)
             return False
 
diff --git a/sickbeard/notifiers/plex.py b/sickbeard/notifiers/plex.py
index e0e0987b182e3d554b5dd2faeef01e9e085e9b1d..0202013f215365381fc22c902f5d2e78297dca25 100644
--- a/sickbeard/notifiers/plex.py
+++ b/sickbeard/notifiers/plex.py
@@ -89,7 +89,7 @@ class PLEXNotifier(object):
             # could return result response = re.compile('<html><li>(.+\w)</html>').findall(result)
             return 'OK'
 
-        except (urllib2.URLError, IOError), e:
+        except (urllib2.URLError, IOError) as e:
             logger.log(u'PLEX: Warning: Couldn\'t contact Plex at ' + url + ' ' + ex(e), logger.WARNING)
             return False
 
@@ -232,7 +232,7 @@ class PLEXNotifier(object):
                 try:
                     xml_tree = etree.parse(urllib.urlopen(url))
                     media_container = xml_tree.getroot()
-                except IOError, e:
+                except IOError as e:
                     logger.log(u'PLEX: Error while trying to contact Plex Media Server: ' + ex(e), logger.WARNING)
                     hosts_failed.append(cur_host)
                     continue
@@ -274,7 +274,7 @@ class PLEXNotifier(object):
                 try:
                     force and urllib.urlopen(url)
                     host_list.append(cur_host)
-                except Exception, e:
+                except Exception as e:
                     logger.log(u'PLEX: Error updating library section for Plex Media Server: ' + ex(e), logger.WARNING)
                     hosts_failed.append(cur_host)
 
diff --git a/sickbeard/notifiers/pushover.py b/sickbeard/notifiers/pushover.py
index 6c3e22a4ed2933c8290506b61d857b48a1ab9711..064ac46f3f89318306b8188c9646d2973498ae08 100644
--- a/sickbeard/notifiers/pushover.py
+++ b/sickbeard/notifiers/pushover.py
@@ -94,7 +94,7 @@ class PushoverNotifier(object):
             conn.request("POST", "/1/messages.json",
                          urllib.urlencode(args), {"Content-type": "application/x-www-form-urlencoded"})
 
-        except urllib2.HTTPError, e:
+        except urllib2.HTTPError as e:
             # if we get an error back that doesn't have an error code then who knows what's really happening
             if not hasattr(e, 'code'):
                 logger.log(u"Pushover notification failed." + ex(e), logger.ERROR)
diff --git a/sickbeard/notifiers/pytivo.py b/sickbeard/notifiers/pytivo.py
index c6fd68d6151ee4757a02edfc4cef7b58e9483d92..1c28eccfc322c8392c412e8004a5a5c85b235f1f 100644
--- a/sickbeard/notifiers/pytivo.py
+++ b/sickbeard/notifiers/pytivo.py
@@ -94,14 +94,14 @@ class pyTivoNotifier(object):
 
         try:
             response = urlopen(request)  # @UnusedVariable
-        except HTTPError, e:
+        except HTTPError as e:
             if hasattr(e, 'reason'):
                 logger.log(u"pyTivo notification: Error, failed to reach a server - " + e.reason, logger.ERROR)
                 return False
             elif hasattr(e, 'code'):
                 logger.log(u"pyTivo notification: Error, the server couldn't fulfill the request - " + e.code, logger.ERROR)
             return False
-        except Exception, e:
+        except Exception as e:
             logger.log(u"PYTIVO: Unknown exception: " + ex(e), logger.ERROR)
             return False
         else:
diff --git a/sickbeard/notifiers/synoindex.py b/sickbeard/notifiers/synoindex.py
index 30c844feb5af6443a79466015a5bc64c986412ee..abdee673a4f06c4137a84fc93443c8274c49ed04 100644
--- a/sickbeard/notifiers/synoindex.py
+++ b/sickbeard/notifiers/synoindex.py
@@ -61,7 +61,7 @@ class synoIndexNotifier(object):
                                      cwd=sickbeard.PROG_DIR)
                 out, err = p.communicate()  # @UnusedVariable
                 logger.log(u"Script result: " + str(out), logger.DEBUG)
-            except OSError, e:
+            except OSError as e:
                 logger.log(u"Unable to run synoindex: " + ex(e), logger.ERROR)
 
     def deleteFolder(self, cur_path):
@@ -86,7 +86,7 @@ class synoIndexNotifier(object):
                                      cwd=sickbeard.PROG_DIR)
                 out, err = p.communicate()  # @UnusedVariable
                 logger.log(u"Script result: " + str(out), logger.DEBUG)
-            except OSError, e:
+            except OSError as e:
                 logger.log(u"Unable to run synoindex: " + ex(e), logger.ERROR)
 
 
diff --git a/sickbeard/notifiers/synologynotifier.py b/sickbeard/notifiers/synologynotifier.py
index cadac287d19021cbd7402695b9fc88fac1d9a191..bbdcfbb82cd238da5d0d5691419d76c35c4f51a4 100644
--- a/sickbeard/notifiers/synologynotifier.py
+++ b/sickbeard/notifiers/synologynotifier.py
@@ -62,7 +62,7 @@ class synologyNotifier(object):
                                  cwd=sickbeard.PROG_DIR)
             out, err = p.communicate()  # @UnusedVariable
             logger.log(u"Script result: " + str(out), logger.DEBUG)
-        except OSError, e:
+        except OSError as e:
             logger.log(u"Unable to run synodsmnotify: " + ex(e))
 
 
diff --git a/sickbeard/notifiers/tweet.py b/sickbeard/notifiers/tweet.py
index 0f114758019cda43527390b51191f5e54a28bfe3..9005a66411aee1e91356572bfdb094d6d30c657c 100644
--- a/sickbeard/notifiers/tweet.py
+++ b/sickbeard/notifiers/tweet.py
@@ -136,7 +136,7 @@ class TwitterNotifier(object):
 
         try:
             api.PostUpdate(message.encode('utf8')[:139])
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error Sending Tweet: " + ex(e), logger.ERROR)
             return False
 
@@ -156,7 +156,7 @@ class TwitterNotifier(object):
 
         try:
             api.PostDirectMessage(dmdest, message.encode('utf8')[:139])
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error Sending Tweet (DM): " + ex(e), logger.ERROR)
             return False
 
diff --git a/sickbeard/nzbget.py b/sickbeard/nzbget.py
index 2f14ad625dc350ab887b9152563af9dc012e2f93..b8bc568eb9f8d380aa11e21ebaa0c8a232a3a8e1 100644
--- a/sickbeard/nzbget.py
+++ b/sickbeard/nzbget.py
@@ -67,7 +67,7 @@ def sendNZB(nzb, proper=False):
             logger.WARNING)
         return False
 
-    except xmlrpclib.ProtocolError, e:
+    except xmlrpclib.ProtocolError as e:
         if e.errmsg == "Unauthorized":
             logger.log(u"NZBget username or password is incorrect.", logger.WARNING)
         else:
diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py
index 470fdbc697c7f2ca623c1563e82465e5e723d2a8..8b0343b1e9c336d5ee0007bb906472baf26d38f8 100644
--- a/sickbeard/postProcessor.py
+++ b/sickbeard/postProcessor.py
@@ -390,7 +390,7 @@ class PostProcessor(object):
             try:
                 helpers.moveFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 self._log("Unable to move file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -413,7 +413,7 @@ class PostProcessor(object):
             try:
                 helpers.copyFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 logger.log(u"Unable to copy file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -436,7 +436,7 @@ class PostProcessor(object):
             try:
                 helpers.hardlinkFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 self._log("Unable to link file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -458,7 +458,7 @@ class PostProcessor(object):
             try:
                 helpers.moveAndSymlinkFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 self._log("Unable to link file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -611,7 +611,7 @@ class PostProcessor(object):
             self._log(u"Adding the file to the anidb mylist", logger.DEBUG)
             try:
                 self.anidbEpisode.add_to_mylist(status=1)  # status = 1 sets the status of the file to "internal HDD"
-            except Exception, e:
+            except Exception as e:
                 self._log(u"exception msg: " + str(e))
 
     def _find_info(self):
@@ -649,7 +649,7 @@ class PostProcessor(object):
 
             try:
                 (cur_show, cur_season, cur_episodes, cur_quality, cur_version) = cur_attempt()
-            except (InvalidNameException, InvalidShowException), e:
+            except (InvalidNameException, InvalidShowException) as e:
                 logger.log(u"Unable to parse, skipping: " + ex(e), logger.DEBUG)
                 continue
 
@@ -739,7 +739,7 @@ class PostProcessor(object):
                 curEp = show.getEpisode(season, cur_episode)
                 if not curEp:
                     raise EpisodeNotFoundException()
-            except EpisodeNotFoundException, e:
+            except EpisodeNotFoundException as e:
                 self._log(u"Unable to create episode: " + ex(e), logger.DEBUG)
                 raise EpisodePostProcessingFailedException()
 
@@ -838,10 +838,10 @@ class PostProcessor(object):
                 out, _ = p.communicate()  # @UnusedVariable
                 self._log(u"Script result: " + str(out), logger.DEBUG)
 
-            except OSError, e:
+            except OSError as e:
                 self._log(u"Unable to run extra_script: " + ex(e))
 
-            except Exception, e:
+            except Exception as e:
                 self._log(u"Unable to run extra_script: " + ex(e))
 
     def _is_priority(self, ep_obj, new_ep_quality):
diff --git a/sickbeard/processTV.py b/sickbeard/processTV.py
index 7943e1b53d226e67d7411af900b9d2a289b4867a..fd69dadf753391d432fef39f089ec6c2498b1f80 100644
--- a/sickbeard/processTV.py
+++ b/sickbeard/processTV.py
@@ -80,14 +80,14 @@ def delete_folder(folder, check_empty=True):
         try:
             logger.log(u"Deleting folder (if it's empty): " + folder)
             ek(os.rmdir, folder)
-        except (OSError, IOError), e:
+        except (OSError, IOError) as e:
             logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING)
             return False
     else:
         try:
             logger.log(u"Deleting folder: " + folder)
             shutil.rmtree(folder)
-        except (OSError, IOError), e:
+        except (OSError, IOError) as e:
             logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING)
             return False
 
@@ -126,11 +126,11 @@ def delete_files(processPath, notwantedFiles, result, force=False):
             result.output += logHelper(u"Changing ReadOnly Flag for file " + cur_file, logger.DEBUG)
             try:
                 ek(os.chmod, cur_file_path, stat.S_IWRITE)
-            except OSError, e:
+            except OSError as e:
                 result.output += logHelper(u"Cannot change permissions of " + cur_file_path + ': ' + ex(e), logger.DEBUG)
         try:
             ek(os.remove, cur_file_path)
-        except OSError, e:
+        except OSError as e:
             result.output += logHelper(u"Unable to delete file " + cur_file + ': ' + str(e.strerror), logger.DEBUG)
 
 
@@ -464,7 +464,7 @@ def unRAR(path, rarFiles, force, result):  # pylint: disable=too-many-branches,t
                 result.result = False
                 result.missedfiles.append(archive + " : Unpacking Failed with an Invalid Rar Archive Error")
                 continue
-            except Exception, e:
+            except Exception as e:
                 result.output += logHelper(u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR)
                 result.result = False
                 result.missedfiles.append(archive + " : Unpacking failed for an unknown reason")
@@ -553,7 +553,7 @@ def process_media(processPath, videoFiles, nzbName, process_method, force, is_pr
 
             result.result = processor.process()
             process_fail_message = ""
-        except EpisodePostProcessingFailedException, e:
+        except EpisodePostProcessingFailedException as e:
             result.result = False
             process_fail_message = ex(e)
 
@@ -607,7 +607,7 @@ def process_failed(dirName, nzbName, result):
             processor = failedProcessor.FailedProcessor(dirName, nzbName)
             result.result = processor.process()
             process_fail_message = ""
-        except FailedPostProcessingFailedException, e:
+        except FailedPostProcessingFailedException as e:
             result.result = False
             process_fail_message = ex(e)
 
diff --git a/sickbeard/properFinder.py b/sickbeard/properFinder.py
index 183608d342b36ca87156f1c796686ead2cf961ea..44cec35c625731947a9bce4a4efcaf53fbd7d748 100644
--- a/sickbeard/properFinder.py
+++ b/sickbeard/properFinder.py
@@ -87,10 +87,10 @@ class ProperFinder:
 
             try:
                 curPropers = curProvider.find_propers(search_date)
-            except AuthException, e:
+            except AuthException as e:
                 logger.log(u"Authentication error: " + ex(e), logger.DEBUG)
                 continue
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.DEBUG)
                 logger.log(traceback.format_exc(), logger.DEBUG)
                 continue
diff --git a/sickbeard/providers/bluetigers.py b/sickbeard/providers/bluetigers.py
index c3af540e1150240bac584fef9cecae73de518369..d17bb8027e9574061c9cba44d53cc72610acc089 100644
--- a/sickbeard/providers/bluetigers.py
+++ b/sickbeard/providers/bluetigers.py
@@ -133,7 +133,7 @@ class BLUETIGERSProvider(TorrentProvider):
 
                                 items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/cpasbien.py b/sickbeard/providers/cpasbien.py
index c826b9411be36254824d069af424e835218b3cc2..3c1c1f91ee3ffc210a65297e80198b2d16248736 100644
--- a/sickbeard/providers/cpasbien.py
+++ b/sickbeard/providers/cpasbien.py
@@ -105,7 +105,7 @@ class CpasbienProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py
index 95a78a1a8c8640f7e41fd63d8f8422724fcaf7c1..29629b46bd5ca749a0fe956f7a8d62fd6e21d470 100644
--- a/sickbeard/providers/fnt.py
+++ b/sickbeard/providers/fnt.py
@@ -143,7 +143,7 @@ class FNTProvider(TorrentProvider):
 
                                     items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/gftracker.py b/sickbeard/providers/gftracker.py
index c2fecc7148f0c0a525988adab96dc8fdb80167f2..1a154a24073b989f1e51486ec421075eb910ae3a 100644
--- a/sickbeard/providers/gftracker.py
+++ b/sickbeard/providers/gftracker.py
@@ -154,7 +154,7 @@ class GFTrackerProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py
index 9043e86fabdc0342959e9018fa989da7a3ef4ed5..8f1541ab502ca6ce2c73d5f64dbeaba9845bc5b9 100644
--- a/sickbeard/providers/iptorrents.py
+++ b/sickbeard/providers/iptorrents.py
@@ -144,7 +144,7 @@ class IPTorrentsProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Error: %r" % ex(e), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py
index 13f885a5c60cf9e9060ec4b0b7c08f658cf96880..3163a0c0c267f1a22ae9d04325d5661ddefaa229 100644
--- a/sickbeard/providers/morethantv.py
+++ b/sickbeard/providers/morethantv.py
@@ -170,7 +170,7 @@ class MoreThanTVProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/pretome.py b/sickbeard/providers/pretome.py
index 87430198ee523e70a5c464365490683dd1b92782..e37dbbed98afac949a7c9582ccb604eeb49f5357 100644
--- a/sickbeard/providers/pretome.py
+++ b/sickbeard/providers/pretome.py
@@ -156,7 +156,7 @@ class PretomeProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/rsstorrent.py b/sickbeard/providers/rsstorrent.py
index bb3d72ed7317664fb0580b6ca9201d1ae2c5c0e9..b53f5f2a5cdd4e1f1d6903943a5e58452c1ee39a 100644
--- a/sickbeard/providers/rsstorrent.py
+++ b/sickbeard/providers/rsstorrent.py
@@ -122,13 +122,13 @@ class TorrentRssProvider(TorrentProvider):
                 torrent_file = self.get_url(url)
                 try:
                     bdecode(torrent_file)
-                except Exception, e:
+                except Exception as e:
                     self.dumpHTML(torrent_file)
                     return (False, 'Torrent link is not a valid torrent file: ' + ex(e))
 
             return (True, 'RSS feed Parsed correctly')
 
-        except Exception, e:
+        except Exception as e:
             return (False, 'Error when trying to load RSS: ' + ex(e))
 
     @staticmethod
@@ -140,7 +140,7 @@ class TorrentRssProvider(TorrentProvider):
             fileOut.write(data)
             fileOut.close()
             helpers.chmodAsParent(dumpName)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to save the file: %s " % repr(e), logger.ERROR)
             return False
         logger.log(u"Saved custom_torrent html dump %s " % dumpName, logger.INFO)
diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py
index c8d7fdd080aa9af734653517b464d77ca4b51368..77e6673c25870cd04b7f136a2f571b50038fb4d4 100644
--- a/sickbeard/providers/scenetime.py
+++ b/sickbeard/providers/scenetime.py
@@ -139,7 +139,7 @@ class SceneTimeProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/tokyotoshokan.py b/sickbeard/providers/tokyotoshokan.py
index f2cac0fcafd77ebf53a7e57cd8d7c728c57714c1..57227bc0915ea9dc02cc89225004d38c09fe52b0 100644
--- a/sickbeard/providers/tokyotoshokan.py
+++ b/sickbeard/providers/tokyotoshokan.py
@@ -102,7 +102,7 @@ class TokyoToshokanProvider(TorrentProvider):
 
                         results.append(item)
 
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
         # FIXME SORTING
diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py
index 7601a7b615f33bc74beeb75c8eba48b28c2ed691..e9bf8d02dfb61b928276acf77de253cbc1e61de2 100644
--- a/sickbeard/providers/torrentbytes.py
+++ b/sickbeard/providers/torrentbytes.py
@@ -155,7 +155,7 @@ class TorrentBytesProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py
index bf069c022d4e011d173371ccddc1db4f355e0581..7602e39595e8fc23f0c4340e95b9796eb6e2a422 100644
--- a/sickbeard/providers/torrentleech.py
+++ b/sickbeard/providers/torrentleech.py
@@ -133,7 +133,7 @@ class TorrentLeechProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/sab.py b/sickbeard/sab.py
index de8687383d4299d46ef41c3e1e8c213dfb05c43f..cd64cd767112b1548ab7b942b7366c79879fd071 100644
--- a/sickbeard/sab.py
+++ b/sickbeard/sab.py
@@ -111,11 +111,11 @@ def sendNZB(nzb):
 
             f = opener.open(req)
 
-    except (EOFError, IOError), e:
+    except (EOFError, IOError) as e:
         logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR)
         return False
 
-    except httplib.InvalidURL, e:
+    except httplib.InvalidURL as e:
         logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR)
         return False
 
@@ -127,7 +127,7 @@ def sendNZB(nzb):
     # if we opened the URL connection then read the result from SAB
     try:
         result = f.readlines()
-    except Exception, e:
+    except Exception as e:
         logger.log(u"Error trying to get result from SAB, NZB not sent: " + ex(e), logger.ERROR)
         return False
 
@@ -162,7 +162,7 @@ def _checkSabResponse(f):
     """
     try:
         result = f.readlines()
-    except Exception, e:
+    except Exception as e:
         logger.log(u"Error trying to get result from SAB" + ex(e), logger.ERROR)
         return False, "Error from SAB"
 
@@ -174,7 +174,7 @@ def _checkSabResponse(f):
     sabJson = {}
     try:
         sabJson = json.loads(sabText)
-    except ValueError, e:
+    except ValueError as e:
         pass
 
     if sabText == "Missing authentication":
@@ -196,10 +196,10 @@ def _sabURLOpenSimple(url):
     """
     try:
         f = urllib.urlopen(url)
-    except (EOFError, IOError), e:
+    except (EOFError, IOError) as e:
         logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR)
         return False, "Unable to connect"
-    except httplib.InvalidURL, e:
+    except httplib.InvalidURL as e:
         logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR)
         return False, "Invalid SAB host"
     if f is None:
diff --git a/sickbeard/scene_numbering.py b/sickbeard/scene_numbering.py
index 23ba5f06c53477973a852cad0cc4817f54039453..8f73628fe8b864b5b76fbf6c03e5ae7f7012b07f 100644
--- a/sickbeard/scene_numbering.py
+++ b/sickbeard/scene_numbering.py
@@ -530,7 +530,7 @@ def xem_refresh(indexer_id, indexer, force=False):
                 myDB = db.DBConnection()
                 myDB.mass_action(cl)
 
-        except Exception, e:
+        except Exception as e:
             logger.log(
                 u"Exception while refreshing XEM data for show " + str(indexer_id) + " on " + sickbeard.indexerApi(
                     indexer).name + ": " + ex(e), logger.WARNING)
diff --git a/sickbeard/scheduler.py b/sickbeard/scheduler.py
index 627351ab6d5abee7e6d6d3266a3cde3fa32329cd..a6907af2b7a616fa774542127d3ed34bd589c2d9 100644
--- a/sickbeard/scheduler.py
+++ b/sickbeard/scheduler.py
@@ -110,6 +110,6 @@ class Scheduler(threading.Thread):
                 time.sleep(1)
             # exiting thread
             self.stop.clear()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR)
             logger.log(repr(traceback.format_exc()), logger.DEBUG)
diff --git a/sickbeard/search.py b/sickbeard/search.py
index ab4411f83bbfb87f9cd884402334c30448a692f1..5059cf1125230e6cc423a3ca4ca9434e90d2e2be 100644
--- a/sickbeard/search.py
+++ b/sickbeard/search.py
@@ -75,7 +75,7 @@ def _downloadResult(result):
 
             helpers.chmodAsParent(fileName)
 
-        except EnvironmentError, e:
+        except EnvironmentError as e:
             logger.log(u"Error trying to save NZB to black hole: " + ex(e), logger.ERROR)
             newResult = False
     elif result.resultType == "torrent":
@@ -389,10 +389,10 @@ def searchForNeededEpisodes():
         curFoundResults = {}
         try:
             curFoundResults = curProvider.search_rss(episodes)
-        except AuthException, e:
+        except AuthException as e:
             logger.log(u"Authentication error: " + ex(e), logger.ERROR)
             continue
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
             continue
@@ -481,10 +481,10 @@ def searchProviders(show, episodes, manualSearch=False, downCurQuality=False):
 
             try:
                 searchResults = curProvider.find_search_results(show, episodes, search_mode, manualSearch, downCurQuality)
-            except AuthException, e:
+            except AuthException as e:
                 logger.log(u"Authentication error: " + ex(e), logger.ERROR)
                 break
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR)
                 logger.log(traceback.format_exc(), logger.DEBUG)
                 break
diff --git a/sickbeard/showUpdater.py b/sickbeard/showUpdater.py
index b1bac12f516d822cbfd1d4ee483adc8a3fbf1c9d..17e725e1738cdd50b7f2950f8a462775d148f798 100644
--- a/sickbeard/showUpdater.py
+++ b/sickbeard/showUpdater.py
@@ -116,7 +116,7 @@ class ShowUpdater:
                             u"Not updating episodes for show " + cur_show.name + " because it's last/next episode is not within the grace period.",
                             logger.DEBUG)
                         # pi_list.append(sickbeard.showQueueScheduler.action.refreshShow(cur_show, True))
-            except (CantUpdateShowException, CantRefreshShowException), e:
+            except (CantUpdateShowException, CantRefreshShowException) as e:
                 logger.log(u"Automatic update failed: " + ex(e), logger.ERROR)
 
         ui.ProgressIndicators.setIndicator('dailyUpdate', ui.QueueProgressIndicator("Daily Update", pi_list))
diff --git a/sickbeard/show_queue.py b/sickbeard/show_queue.py
index 457b6f8ed5da22b3de640cbbcbcb3af2defa75b6..af60180bc5cfd02ec2a2f06676c005e8dbdaaa1a 100644
--- a/sickbeard/show_queue.py
+++ b/sickbeard/show_queue.py
@@ -309,7 +309,7 @@ class QueueItemAdd(ShowQueueItem):
                                            self.indexer).name) + " but contains no season/episode data.")
                 self._finishEarly()
                 return
-        except Exception, e:
+        except Exception as e:
             logger.log(u"%s Error while loading information from indexer %s. Error: %r" % (self.indexer_id, sickbeard.indexerApi(self.indexer).name, ex(e)), logger.ERROR)
             # logger.log(u"Show name with ID %s doesn't exist on %s anymore. If you are using trakt, it will be removed from your TRAKT watchlist. If you are adding manually, try removing the nfo and adding again" %
             #            (self.indexer_id, sickbeard.indexerApi(self.indexer).name), logger.WARNING)
@@ -379,7 +379,7 @@ class QueueItemAdd(ShowQueueItem):
             # if self.show.classification and "sports" in self.show.classification.lower():
             #     self.show.sports = 1
 
-        except sickbeard.indexer_exception, e:
+        except sickbeard.indexer_exception as e:
             logger.log(
                 u"Unable to add show due to an error with " + sickbeard.indexerApi(self.indexer).name + ": " + ex(e),
                 logger.ERROR)
@@ -399,7 +399,7 @@ class QueueItemAdd(ShowQueueItem):
             self._finishEarly()
             return
 
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error trying to add show: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
             self._finishEarly()
@@ -408,14 +408,14 @@ class QueueItemAdd(ShowQueueItem):
         logger.log(u"Retrieving show info from IMDb", logger.DEBUG)
         try:
             self.show.loadIMDbInfo()
-        except imdb_exceptions.IMDbError, e:
+        except imdb_exceptions.IMDbError as e:
             logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING)
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR)
 
         try:
             self.show.saveToDB()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error saving the show to the database: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
             self._finishEarly()
@@ -426,7 +426,7 @@ class QueueItemAdd(ShowQueueItem):
 
         try:
             self.show.loadEpisodesFromIndexer()
-        except Exception, e:
+        except Exception as e:
             logger.log(
                 u"Error with " + sickbeard.indexerApi(self.show.indexer).name + ", not creating episode list: " + ex(e),
                 logger.ERROR)
@@ -437,7 +437,7 @@ class QueueItemAdd(ShowQueueItem):
 
         try:
             self.show.loadEpisodesFromDir()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error searching dir for episodes: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
@@ -577,11 +577,11 @@ class QueueItemUpdate(ShowQueueItem):
         logger.log(u"Retrieving show info from " + sickbeard.indexerApi(self.show.indexer).name + "", logger.DEBUG)
         try:
             self.show.loadFromIndexer(cache=not self.force)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to contact " + sickbeard.indexerApi(self.show.indexer).name + ", aborting: " + ex(e),
                        logger.WARNING)
             return
-        except sickbeard.indexer_attributenotfound, e:
+        except sickbeard.indexer_attributenotfound as e:
             logger.log(u"Data retrieved from " + sickbeard.indexerApi(
                 self.show.indexer).name + " was incomplete, aborting: " + ex(e), logger.ERROR)
             return
@@ -589,16 +589,16 @@ class QueueItemUpdate(ShowQueueItem):
         logger.log(u"Retrieving show info from IMDb", logger.DEBUG)
         try:
             self.show.loadIMDbInfo()
-        except imdb_exceptions.IMDbError, e:
+        except imdb_exceptions.IMDbError as e:
             logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING)
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
         # have to save show before reading episodes from db
         try:
             self.show.saveToDB()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error saving show info to the database: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
@@ -610,7 +610,7 @@ class QueueItemUpdate(ShowQueueItem):
         logger.log(u"Loading all episodes from " + sickbeard.indexerApi(self.show.indexer).name + "", logger.DEBUG)
         try:
             IndexerEpList = self.show.loadEpisodesFromIndexer(cache=not self.force)
-        except sickbeard.indexer_exception, e:
+        except sickbeard.indexer_exception as e:
             logger.log(u"Unable to get info from " + sickbeard.indexerApi(
                 self.show.indexer).name + ", the show info will not be refreshed: " + ex(e), logger.ERROR)
             IndexerEpList = None
@@ -642,7 +642,7 @@ class QueueItemUpdate(ShowQueueItem):
         # save show again, in case episodes have changed
         try:
             self.show.saveToDB()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error saving show info to the database: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
diff --git a/sickbeard/tv.py b/sickbeard/tv.py
index 4136255b89c1944d5b4965dba4b0d442bcbb03f0..bdaac1d4689b7e20ac92b178892e94d3b7eb4452 100644
--- a/sickbeard/tv.py
+++ b/sickbeard/tv.py
@@ -419,7 +419,7 @@ class TVShow(object):
             logger.log(str(self.indexerid) + u": Creating episode from " + mediaFile, logger.DEBUG)
             try:
                 curEpisode = self.makeEpFromFile(ek(os.path.join, self._location, mediaFile))
-            except (ShowNotFoundException, EpisodeNotFoundException), e:
+            except (ShowNotFoundException, EpisodeNotFoundException) as e:
                 logger.log(u"Episode " + mediaFile + " returned an exception: " + ex(e), logger.ERROR)
                 continue
             except EpisodeDeletedException:
@@ -1012,7 +1012,7 @@ class TVShow(object):
                 else:
                     ek(os.remove, cache_file)
 
-            except OSError, e:
+            except OSError as e:
                 logger.log(u'Unable to %s %s: %s / %s' % (action, cache_file, repr(e), str(e)), logger.WARNING)
 
         # remove entire show folder
@@ -1040,7 +1040,7 @@ class TVShow(object):
 
             except ShowDirectoryNotFoundException:
                 logger.log(u"Show folder does not exist, no need to %s %s" % (action, self._location), logger.WARNING)
-            except OSError, e:
+            except OSError as e:
                 logger.log(u'Unable to %s %s: %s / %s' % (action, self._location, repr(e), str(e)), logger.WARNING)
 
         if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC_WATCHLIST:
@@ -1621,7 +1621,7 @@ class TVEpisode(object):
             else:
                 myEp = cachedSeason[episode]
 
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"" + sickbeard.indexerApi(self.indexer).name + " threw up an error: " + ex(e), logger.DEBUG)
             # if the episode is already valid just log it, if not throw it up
             if self.name:
@@ -1758,11 +1758,11 @@ class TVEpisode(object):
             if ek(os.path.isfile, nfoFile):
                 try:
                     showXML = etree.ElementTree(file=nfoFile)
-                except (SyntaxError, ValueError), e:
+                except (SyntaxError, ValueError) as e:
                     logger.log(u"Error loading the NFO, backing up the NFO and skipping for now: " + ex(e), logger.ERROR)
                     try:
                         ek(os.rename, nfoFile, nfoFile + ".old")
-                    except Exception, e:
+                    except Exception as e:
                         logger.log(
                             u"Failed to rename your episode's NFO file - you need to delete it or fix it: " + ex(e), logger.ERROR)
                     raise NoNFOException("Error in NFO format")
@@ -2093,7 +2093,7 @@ class TVEpisode(object):
             try:
                 np = NameParser(name, showObj=show, naming_pattern=True)
                 parse_result = np.parse(name)
-            except (InvalidNameException, InvalidShowException), e:
+            except (InvalidNameException, InvalidShowException) as e:
                 logger.log(u"Unable to get parse release_group: " + ex(e), logger.DEBUG)
                 return ''
 
diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py
index f01d187a39cff0de59d4e894c439cf2e394c48e0..9ed63c1d1e0cec1e8df3ce3e7125f1fd3f64d5d2 100644
--- a/sickbeard/tvcache.py
+++ b/sickbeard/tvcache.py
@@ -59,7 +59,7 @@ class CacheDBConnection(db.DBConnection):
             if not self.hasColumn(providerName, 'version'):
                 self.addColumn(providerName, 'version', "NUMERIC", "-1")
 
-        except Exception, e:
+        except Exception as e:
             if str(e) != "table [" + providerName + "] already exists":
                 raise
 
@@ -67,7 +67,7 @@ class CacheDBConnection(db.DBConnection):
         try:
             if not self.hasTable('lastUpdate'):
                 self.action("CREATE TABLE lastUpdate (provider TEXT, time NUMERIC)")
-        except Exception, e:
+        except Exception as e:
             if str(e) != "table lastUpdate already exists":
                 raise
 
@@ -127,9 +127,9 @@ class TVCache(object):
                     myDB = self._getDB()
                     myDB.mass_action(cl)
 
-        except AuthException, e:
+        except AuthException as e:
             logger.log(u"Authentication error: " + ex(e), logger.ERROR)
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error while searching " + self.provider.name + ", skipping: " + repr(e), logger.DEBUG)
 
     def getRSSFeed(self, url):
diff --git a/sickbeard/versionChecker.py b/sickbeard/versionChecker.py
index 40ee5ffe0bd8289ee7e7b21380e413f719f17f87..79cb9949b15a845c4f7ed52c4891d952eb9d9fdd 100644
--- a/sickbeard/versionChecker.py
+++ b/sickbeard/versionChecker.py
@@ -605,7 +605,7 @@ class GitUpdateManager(UpdateManager):
         else:
             try:
                 self._check_github_for_update()
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"Unable to contact github, can't check for update: " + repr(e), logger.WARNING)
                 return False
 
@@ -728,7 +728,7 @@ class SourceUpdateManager(UpdateManager):
         # need this to run first to set self._newest_commit_hash
         try:
             self._check_github_for_update()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Unable to contact github, can't check for update: " + repr(e), logger.WARNING)
             return False
 
@@ -869,7 +869,7 @@ class SourceUpdateManager(UpdateManager):
                             ek(os.chmod, new_path, stat.S_IWRITE)
                             ek(os.remove, new_path)
                             ek(os.renames, old_path, new_path)
-                        except Exception, e:
+                        except Exception as e:
                             logger.log(u"Unable to update " + new_path + ': ' + ex(e), logger.DEBUG)
                             ek(os.remove, old_path)  # Trash the updated file without moving in new path
                         continue
@@ -881,7 +881,7 @@ class SourceUpdateManager(UpdateManager):
             sickbeard.CUR_COMMIT_HASH = self._newest_commit_hash
             sickbeard.CUR_COMMIT_BRANCH = self.branch
 
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error while trying to update: " + ex(e), logger.ERROR)
             logger.log(u"Traceback: " + traceback.format_exc(), logger.DEBUG)
             return False
diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py
index ce6ef6d165cafddc6c8bd0781e62b8e5ecc1ad41..29cf2c25d8110b99ba98b0a616144bdaecdae8bb 100644
--- a/sickbeard/webapi.py
+++ b/sickbeard/webapi.py
@@ -134,7 +134,7 @@ class ApiHandler(RequestHandler):
 
         try:
             out_dict = _call_dispatcher(args, kwargs)
-        except Exception, e:  # real internal error oohhh nooo :(
+        except Exception as e:  # real internal error oohhh nooo :(
             logger.log(u"API :: " + ex(e), logger.ERROR)
             error_data = {
                 "error_msg": ex(e),
@@ -165,7 +165,7 @@ class ApiHandler(RequestHandler):
             callback = self.get_query_argument('callback', None) or self.get_query_argument('jsonp', None)
             if callback:
                 out = callback + '(' + out + ');'  # wrap with JSONP call if requested
-        except Exception, e:  # if we fail to generate the output fake an error
+        except Exception as e:  # if we fail to generate the output fake an error
             logger.log(u"API :: " + traceback.format_exc(), logger.DEBUG)
             out = '{"result": "%s", "message": "error while composing output: %s"}' % \
                   (result_type_map[RESULT_ERROR], ex(e))
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index 8f6d76f65bfe6a72895d4a93d5abbdc77041bfca..82bd3dccad2c8c947790cc81804f6e0f62ec4921 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -1483,7 +1483,7 @@ class Home(WebRoot):
                 showObj.flatten_folders = flatten_folders
                 try:
                     sickbeard.showQueueScheduler.action.refreshShow(showObj)
-                except CantRefreshShowException, e:
+                except CantRefreshShowException as e:
                     errors.append("Unable to refresh this show: " + ex(e))
 
             showObj.paused = paused
@@ -1514,7 +1514,7 @@ class Home(WebRoot):
                         showObj.location = location
                         try:
                             sickbeard.showQueueScheduler.action.refreshShow(showObj)
-                        except CantRefreshShowException, e:
+                        except CantRefreshShowException as e:
                             errors.append("Unable to refresh this show:" + ex(e))
                             # grab updated info from TVDB
                             # showObj.loadEpisodesFromIndexer()
@@ -1538,14 +1538,14 @@ class Home(WebRoot):
             try:
                 sickbeard.scene_exceptions.update_scene_exceptions(showObj.indexerid, exceptions_list)  # @UndefinedVdexerid)
                 time.sleep(cpu_presets[sickbeard.CPU_PRESET])
-            except CantUpdateShowException, e:
+            except CantUpdateShowException as e:
                 errors.append("Unable to force an update on scene exceptions of the show.")
 
         if do_update_scene_numbering:
             try:
                 sickbeard.scene_numbering.xem_refresh(showObj.indexerid, showObj.indexer)
                 time.sleep(cpu_presets[sickbeard.CPU_PRESET])
-            except CantUpdateShowException, e:
+            except CantUpdateShowException as e:
                 errors.append("Unable to force an update on scene numbering of the show.")
 
         if directCall:
@@ -1616,7 +1616,7 @@ class Home(WebRoot):
         # force the update
         try:
             sickbeard.showQueueScheduler.action.updateShow(showObj, bool(force))
-        except CantUpdateShowException, e:
+        except CantUpdateShowException as e:
             ui.notifications.error("Unable to update this show.", ex(e))
 
         # just give it some time
@@ -3427,7 +3427,7 @@ class Manage(Home, WebRoot):
                 try:
                     sickbeard.showQueueScheduler.action.updateShow(showObj, True)
                     updates.append(showObj.name)
-                except CantUpdateShowException, e:
+                except CantUpdateShowException as e:
                     errors.append("Unable to update show: {0}".format(str(e)))
 
             # don't bother refreshing shows that were updated anyway
@@ -3435,7 +3435,7 @@ class Manage(Home, WebRoot):
                 try:
                     sickbeard.showQueueScheduler.action.refreshShow(showObj)
                     refreshes.append(showObj.name)
-                except CantRefreshShowException, e:
+                except CantRefreshShowException as e:
                     errors.append("Unable to refresh show " + showObj.name + ": " + ex(e))
 
             if curShowID in toRename:
@@ -4231,7 +4231,7 @@ class ConfigPostProcessing(Config):
                 return 'supported'
             logger.log(u'Rar Not Supported: Can not read the content of test file', logger.ERROR)
             return 'not supported'
-        except Exception, e:
+        except Exception as e:
             logger.log(u'Rar Not Supported: ' + ex(e), logger.ERROR)
             return 'not supported'