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.
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.
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”)
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.
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?
A biblioteca correta que contém a função move é a biblioteca shutil, não shutils como está no tópico ;]
Ops, corrigido, valeu Carlos!
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
A propósito, este post sobre manipulação de arquivos me foi muito útil.
Muito obrigado!!!