É isso que estou usando no momento:
import os, shutil
path = "/volume1/Users/Transfer/"
moveto = "/volume1/Users/Drive_Transfer/"
files = os.listdir(path)
files.sort()
for f in files:
src = path+f
dst = moveto+f
shutil.move(src,dst)
Agora totalmente funcional. Espero que isso ajude você.
Editar:
Transformei isso em uma função, que aceita um diretório de origem e destino, criando a pasta de destino, se não existir, e move os arquivos. Também permite a filtragem dos arquivos src, por exemplo, se você deseja apenas mover imagens, então usa o padrão '*.jpg'
, por padrão, ele move tudo no diretório
import os, shutil, pathlib, fnmatch
def move_dir(src: str, dst: str, pattern: str = '*'):
if not os.path.isdir(dst):
pathlib.Path(dst).mkdir(parents=True, exist_ok=True)
for f in fnmatch.filter(os.listdir(src), pattern):
shutil.move(os.path.join(src, f), os.path.join(dst, f))
mv
comando do gnu-coreutils , o python'sshutil.move
tem um caso de borda em que ashutil.move
função difere. Clique aqui para obter a gravação completa . Em poucas palavras, o Pythonshutil.move
criará uma exceção (mas o gnu-coreutilsmv
não) quando o seu destino for um diretório e o diretório já tiver um arquivo com o mesmo nome que a fonte (novamente, para obter mais informações, consulte o link fornecido na frase anterior). )