mirror of
https://github.com/l1ving/youtube-dl
synced 2024-11-20 22:16:12 +08:00
Merge pull request #4247 from ivan/info-json
Fix #4246 and #4244 .info.json bugs
This commit is contained in:
commit
3ba098a6a5
@ -71,10 +71,10 @@ def preferredencoding():
|
||||
|
||||
|
||||
def write_json_file(obj, fn):
|
||||
""" Encode obj as JSON and write it to fn, atomically """
|
||||
""" Encode obj as JSON and write it to fn, atomically if possible """
|
||||
|
||||
fn = encodeFilename(fn)
|
||||
if sys.version_info < (3, 0):
|
||||
if sys.version_info < (3, 0) and sys.platform != 'win32':
|
||||
encoding = get_filesystem_encoding()
|
||||
# os.path.basename returns a bytes object, but NamedTemporaryFile
|
||||
# will fail if the filename contains non ascii characters unless we
|
||||
@ -108,6 +108,13 @@ def write_json_file(obj, fn):
|
||||
try:
|
||||
with tf:
|
||||
json.dump(obj, tf)
|
||||
if sys.platform == 'win32':
|
||||
# Need to remove existing file on Windows, else os.rename raises
|
||||
# WindowsError or FileExistsError.
|
||||
try:
|
||||
os.unlink(fn)
|
||||
except OSError:
|
||||
pass
|
||||
os.rename(tf.name, fn)
|
||||
except:
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user