[utils] Add missing mode and encoding arguments

This commit is contained in:
Sergey M․ 2014-08-21 22:03:00 +07:00
parent 55db73efdf
commit 73159f99cc

View file

@ -233,18 +233,24 @@ def compat_print(s):
def write_json_file(obj, fn):
""" Encode obj as JSON and write it to fn, atomically """
args = {
'suffix': '.tmp',
'prefix': os.path.basename(fn) + '.',
'dir': os.path.dirname(fn),
'delete': False,
}
# In Python 2.x, json.dump expects a bytestream.
# In Python 3.x, it writes to a character stream
if sys.version_info < (3, 0):
mode = 'wb'
encoding = None
args['mode'] = 'wb'
else:
mode = 'w'
encoding = 'utf-8'
tf = tempfile.NamedTemporaryFile(
suffix='.tmp', prefix=os.path.basename(fn) + '.',
dir=os.path.dirname(fn),
delete=False)
args.update({
'mode': 'w',
'encoding': 'utf-8',
})
tf = tempfile.NamedTemporaryFile(**args)
try:
with tf: