win32/replace.py: Fix replacing items in files with UTF-8 content
authorChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 10 May 2017 01:17:29 +0000 (18:17 -0700)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 10 May 2017 01:32:57 +0000 (18:32 -0700)
Some files that this script will process might have UTF-8 items in
there, which can cause problems on Python 3.x as it is more strict and
careful on unicode issues.  Fix this by:

-Doing what we did before on Python 2.x
-Opening the file with encoding='utf-8' on Python 3.x

win32/replace.py

index a81bab9..f215cce 100644 (file)
@@ -21,9 +21,15 @@ valid_actions = ['remove-prefix',
                  'replace-str',
                  'remove-str']
 
+def open_file(filename, mode):
+    if sys.version_info[0] < 3:
+        return open(filename, mode=mode)
+    else:
+        return open(filename, mode=mode, encoding='utf-8')
+
 def replace_multi(src, dest, replace_items):
-    with open(src, 'r') as s:
-        with open(dest, 'w') as d:
+    with open_file(src, 'r') as s:
+        with open_file(dest, 'w') as d:
             for line in s:
                 replace_dict = dict((re.escape(key), value) \
                                for key, value in replace_items.items())