Python: Mover arquivo para outro diretório

Palavras-chave: Python, mover, arquivo, diretório, shutil, link

No Python, para mover um arquivo para outro diretório basta usar o módulo shutil:

import shutil
shutil.move("este-arquivo", "/tmp")

Informe o nome do arquivo e em seguida qual o diretório de destino. O arquivo do exemplo está no diretório corrente.

Em versões mais antigas do Python como a 1.5 o método move não existia. Se este é seu caso, ou não quer carregar outro módulo somente para mover um arquivo, pode usar o próprio módulo os para isso:

import os
os.link("este-arquivo", "/tmp/este-arquivo")
os.remove("este-arquivo")

Sim é feio, mas funciona :) Primeiro ele cria um link (hardlink) entre os arquivos, depois remove o original. Note que é preciso indicar o nome do arquivo no diretório de destino.

This entry was posted in Python. Bookmark the permalink.

8 Responses to Python: Mover arquivo para outro diretório

  1. Aurélio,

    A dica para o python 1.5 não funciona se o sistema de arquivos é diferente, pois links reais (hard-links) só são possíveis dentro de um único sistema de arquivos.

    Para sempre funcionar, você deveria ler o arquivo origem e escrever o arquivo destino. Uma otimização possível é misturar este método com o os.link() quando o filesystem for o mesmo.

  2. Se o arquivo fonte e o diretorio destino estiverem no mesmo filesystem, tambem da pra usar os.rename() pra mover ele:

    os.rename(“bla”, “/tmp/bla”)

  3. A estratégia clássica em Unix é primeiro tentar fazer link, depois tentar uma cópia se o link falhar (indicando que origem e destino estão em filesystems diferentes) e depois um unlink se um dos métodos anteriores funcionar.

  4. deploy says:

    Eu tenho o Python rodando no Win XP, eu não teria que passar o diretório de origem do arqui e em seguida o diretório destino?

  5. A biblioteca correta que contém a função move é a biblioteca shutil, não shutils como está no tópico ;]

  6. Ops, corrigido, valeu Carlos!

  7. Emerson Lara says:

    Bem pessoal.

    Eu tenho um blog com o intuito de dar algumas dicas para quem está começando e/ou quem usa o Pyhton 3.x

    Se quiserem deem uma olhada:

    http://python3-dicas.blogspot.com.br

  8. Emerson Lara says:

    A propósito, este post sobre manipulação de arquivos me foi muito útil.
    Muito obrigado!!!

Leave a Reply

Your email address will not be published. Required fields are marked *