diff --git a/subcmds/init.py b/subcmds/init.py
index 1fbe465..e2f34cc 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -15,7 +15,6 @@
 import os
 import platform
 import re
-import subprocess
 import sys
 import urllib.parse
 
@@ -132,8 +131,8 @@
               'cannot be re-initialized without --manifest-url/-u')
         sys.exit(1)
 
-      if opt.standalone_manifest or (
-          was_standalone_manifest and opt.manifest_url):
+      if opt.standalone_manifest or (was_standalone_manifest and
+                                     opt.manifest_url):
         m.config.ClearCache()
         if m.gitdir and os.path.exists(m.gitdir):
           platform_utils.rmtree(m.gitdir)
@@ -486,8 +485,8 @@
         self.OptionParser.error('--mirror and --use-superproject cannot be '
                                 'used together.')
 
-    if opt.standalone_manifest and (
-        opt.manifest_branch or opt.manifest_name != 'default.xml'):
+    if opt.standalone_manifest and (opt.manifest_branch or
+                                    opt.manifest_name != 'default.xml'):
       self.OptionParser.error('--manifest-branch and --manifest-name cannot'
                               ' be used with --standalone-manifest.')
 
diff --git a/subcmds/sync.py b/subcmds/sync.py
index ee7e4a8..4898430 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -448,8 +448,8 @@
       else:
         pm.update(inc=0, msg='warming up')
         chunksize = 4
-      with multiprocessing.Pool(
-          jobs, initializer=self._FetchInitChild, initargs=(ssh_proxy,)) as pool:
+      with multiprocessing.Pool(jobs, initializer=self._FetchInitChild,
+                                initargs=(ssh_proxy,)) as pool:
         results = pool.imap_unordered(
             functools.partial(self._FetchProjectList, opt),
             projects_list,
@@ -767,7 +767,7 @@
       with open(copylinkfile_path, 'rb') as fp:
         try:
           old_copylinkfile_paths = json.load(fp)
-        except:
+        except Exception:
           print('error: %s is not a json formatted file.' %
                 copylinkfile_path, file=sys.stderr)
           platform_utils.remove(copylinkfile_path)
@@ -1131,7 +1131,7 @@
     target = os.path.join('repo', 'docs', 'internal-fs-layout.md')
     try:
       platform_utils.symlink(target, link)
-    except:
+    except Exception:
       pass
 
   wrapper = Wrapper()
