Remove some antipatterns and ensure that we always write the JSON file with UTF-8

This commit is contained in:
Philipp Hagemeister 2012-12-17 19:48:10 +01:00
parent 80d3177e5c
commit ce4be3a91d

View file

@ -4,6 +4,7 @@
from __future__ import absolute_import from __future__ import absolute_import
import math import math
import io
import os import os
import re import re
import socket import socket
@ -453,12 +454,9 @@ def process_info(self, info_dict):
self.trouble(u'ERROR: No JSON encoder found. Update to Python 2.6+, setup a json module, or leave out --write-info-json.') self.trouble(u'ERROR: No JSON encoder found. Update to Python 2.6+, setup a json module, or leave out --write-info-json.')
return return
try: try:
infof = open(encodeFilename(infofn), 'w') with io.open(encodeFilename(infofn), 'w', 'utf-8') as infof:
try: json_info_dict = dict((k, v) for k,v in info_dict.items() if not k in ['urlhandle'])
json_info_dict = dict((k, info_dict[k]) for k in info_dict if not k in ['urlhandle'])
json.dump(json_info_dict, infof) json.dump(json_info_dict, infof)
finally:
infof.close()
except (OSError, IOError): except (OSError, IOError):
self.trouble(u'ERROR: Cannot write metadata to JSON file ' + infofn) self.trouble(u'ERROR: Cannot write metadata to JSON file ' + infofn)
return return