[utils] Fix "write_json_file" for unicode names in python 2.x (fixes #4125)
This commit is contained in:
		| @@ -73,10 +73,22 @@ def preferredencoding(): | ||||
| def write_json_file(obj, fn): | ||||
|     """ Encode obj as JSON and write it to fn, atomically """ | ||||
|  | ||||
|     if sys.version_info < (3, 0): | ||||
|         encoding = get_filesystem_encoding() | ||||
|         # os.path.basename returns a bytes object, but NamedTemporaryFile | ||||
|         # will fail if the filename contains non ascii characters unless we | ||||
|         # use a unicode object | ||||
|         path_basename = lambda f: os.path.basename(fn).decode(encoding) | ||||
|         # the same for os.path.dirname | ||||
|         path_dirname = lambda f: os.path.dirname(fn).decode(encoding) | ||||
|     else: | ||||
|         path_basename = os.path.basename | ||||
|         path_dirname = os.path.dirname | ||||
|  | ||||
|     args = { | ||||
|         'suffix': '.tmp', | ||||
|         'prefix': os.path.basename(fn) + '.', | ||||
|         'dir': os.path.dirname(fn), | ||||
|         'prefix': path_basename(fn) + '.', | ||||
|         'dir': path_dirname(fn), | ||||
|         'delete': False, | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz