Eu quero mudar a.txt
para b.kml
.
python
file-rename
zjm1126
fonte
fonte
C:/folder/file.txt
no Windows ou/home/file.txt
no Linux / MacOS).OSError
nos sistemas Windows.os.path.exists
deve ser usado para verificar se o destino existe antes de renomear. Isso cria um erro "Hora da verificação até a hora do uso", mas é improvável que cause problemas. (Eu não conheço nenhuma maneira fácil de contornar isso - veja aqui .os.replace
O arquivo pode estar dentro de um diretório; nesse caso, especifique o caminho:
fonte
Isso funcionará para renomear ou mover um arquivo.
fonte
shutil.move
não é uma boa opção devido a não ser uma operação atômica. Se o arquivo estiver aberto, por exemplo,shutil.move
criará um arquivo comnew_name
, mas não excluirá o arquivoold_name
, deixando-o com dois arquivos.os.rename
por outro lado, não fará nada, o que é uma opção melhor . Comshutil.move
, mesmo que você tenha detectado o erro, ainda precisará se preocupar em verificar e excluir o arquivo não autorizado. Só não vale a pena quando existe uma ferramenta melhor:os.rename
.A partir do Python 3.4, pode-se usar o módulo pathlib para resolver isso.
Se você estiver em uma versão mais antiga, poderá usar a versão suportada encontrada aqui
Vamos supor que você não esteja no caminho raiz (apenas para adicionar um pouco de dificuldade) que deseja renomear e tenha que fornecer um caminho completo, podemos observar isso:
Portanto, você pode seguir seu caminho e criar um
Path
objeto a partir dele:Apenas para fornecer algumas informações sobre esse objeto que temos agora, podemos extrair coisas dele. Por exemplo, se por qualquer motivo desejamos renomear o arquivo modificando o nome do arquivo de
the_file
parathe_file_1
, podemos obter a parte do nome do arquivo:E ainda segure a extensão na mão também:
Podemos realizar nossa modificação com uma simples manipulação de string:
Python 3.6 e superior fazem uso de strings f!
De outra forma:
E agora podemos executar nossa renomeação chamando o
rename
método no objeto de caminho que criamos e anexando oext
para completar a estrutura de renomeação adequada que queremos:Mais em breve para mostrar sua simplicidade:
Python 3.6+:
Versões menores que Python 3.6 usam o método de formato de string:
fonte
pathlib
biblioteca é introduzida no python 3.4, portanto, compartilhar a resposta aqui também oferece exposição a um módulo sólido para mostrar sua versatilidade e uso para requisitos mais complicados.{}
São para formatação de strings, sobre as quais você pode ler aqui . Por fim, o que está acontecendo é que eles{}
são substituídos pelas variáveis que são passadas para oformat
método. Assim, o primeiro{}
retém o que está dentroname_without_extension
e o segundo retém o segundo argumento que é simplesmente1
.os.rename(old, new)
Isso pode ser encontrado nos documentos do Python: http://docs.python.org/library/os.html
fonte
Use
os.rename
. Mas você precisa passar o caminho completo dos dois arquivos para a função. Se eu tiver um arquivoa.txt
na minha área de trabalho, então o farei e também tenho que fornecer também um arquivo renomeado.fonte
fonte
chdir()
um diretório, por exemplo, o que acontece no Windows quando é um UNC? E fazer umchdir()
tem efeitos colaterais. Prefiro apenas especificar os caminhos necessários paraos.rename()
diretamente, nadachdir()
.Você pode usar o os.system para chamar o terminal para realizar a tarefa:
fonte
mv
é um programa de linha de comando embutido no unix, para mover / renomear um arquivo.fonte
os.path
com o modernopathlib
são bastante duvidosas. Vá até o fim com opathlib
lugar.Isso deve servir. python 3+
fonte