Use shutil.move to move data instead of Path.rename

Path.rename() cannot move data to different drives. It can only rename the path reference on the same file system. However, shutil.move() will move the data while also changing it's name.
This commit is contained in:
varyg 2023-02-12 20:25:39 +01:00 committed by rlaphoenix
parent b25e6c5ce5
commit bb9e85d777
3 changed files with 8 additions and 4 deletions

View File

@ -1,5 +1,6 @@
import logging import logging
import sys import sys
import shutil
import tkinter.filedialog import tkinter.filedialog
from collections import defaultdict from collections import defaultdict
from pathlib import Path from pathlib import Path
@ -243,7 +244,7 @@ def add(ctx: click.Context, profile: str, service: str, cookie: Optional[str] =
if final_path.exists(): if final_path.exists():
log.error(f"A Cookie file for the Profile {profile} on {service} already exists.") log.error(f"A Cookie file for the Profile {profile} on {service} already exists.")
sys.exit(1) sys.exit(1)
cookie = cookie.rename(final_path) shutil.move(cookie, final_path)
log.info(f"Moved Cookie file to: {cookie}") log.info(f"Moved Cookie file to: {cookie}")
if credential: if credential:

View File

@ -5,6 +5,7 @@ import logging
import math import math
import random import random
import re import re
import shutil
import sys import sys
import time import time
import traceback import traceback
@ -674,7 +675,7 @@ class dl:
final_dir.mkdir(parents=True, exist_ok=True) final_dir.mkdir(parents=True, exist_ok=True)
final_path = final_dir / f"{final_filename}{muxed_path.suffix}" final_path = final_dir / f"{final_filename}{muxed_path.suffix}"
muxed_path.rename(final_path) shutil.move(muxed_path, final_path)
self.log.info(f" + Moved to {final_path}") self.log.info(f" + Moved to {final_path}")
@staticmethod @staticmethod

View File

@ -1,6 +1,7 @@
import asyncio import asyncio
import logging import logging
import re import re
import shutil
import subprocess import subprocess
from enum import Enum from enum import Enum
from pathlib import Path from pathlib import Path
@ -312,7 +313,8 @@ class Track:
if not self.path: if not self.path:
return False return False
target = Path(target) target = Path(target)
ok = self.path.rename(target).resolve() == target.resolve()
ok = Path(shutil.move(self.path, target)).resolve() == target.resolve()
if ok: if ok:
self.path = target self.path = target
return ok return ok
@ -326,7 +328,7 @@ class Track:
if not target.exists() or not self.path: if not target.exists() or not self.path:
return False return False
self.path.unlink() self.path.unlink()
ok = target.rename(self.path) == self.path ok = Path(shutil.move(target, self.path)).resolve() == self.path.resolve()
if not ok: if not ok:
return False return False
return self.move(target) return self.move(target)