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.







6 comments
Comments feed for this article
3 Outubro 2006 às 21:38
Gustavo Sverzut Barbieri
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.
5 Outubro 2006 às 0:55
Alfredo Kojima
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”)
25 Outubro 2006 às 22:03
Claudio Matsuoka
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.
20 Abril 2008 às 16:12
deploy
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?
22 Setembro 2008 às 11:43
Carlos Alberto
A biblioteca correta que contém a função move é a biblioteca shutil, não shutils como está no tópico ;]
22 Setembro 2008 às 13:16
Aurélio Jargas
Ops, corrigido, valeu Carlos!