Tutoriais

Como Extrair o Nome do Arquivo Sem a Extensão em Python

Ana Maria Gomes 18 jun Básico 5xp
Compartilhar

Ao trabalhar com caminhos de arquivos em Python, você pode se deparar com situações em que precisa obter o nome do arquivo sem sua extensão. Essa é uma tarefa comum para manipulação de arquivos, organização ou mesmo quando você está trabalhando com processamento de dados. Neste artigo, exploraremos como alcançar isso usando as bibliotecas internas do Python.

Usando pathlib para Python 3.4 e Superior

O Python 3.4 introduziu o módulo pathlib, que oferece uma abordagem orientada a objetos para lidar com caminhos de sistemas de arquivos. Um dos métodos úteis fornecidos pelo pathlib é .stem, que permite obter o nome do arquivo sem a extensão.

Aqui está um exemplo simples:

from pathlib import Path

# Cria um objeto Path
caminho_arquivo = Path("/caminho/para/arquivo.txt")

# Obtém o nome do arquivo sem a extensão
nome_arquivo_sem_extensao = caminho_arquivo.stem

print(nome_arquivo_sem_extensao)  # Saída: arquivo

É importante notar que se o seu arquivo tiver várias extensões, .stem removerá apenas a última. Por exemplo:

caminho_arquivo = Path("/caminho/para/arquivo.tar.gz")
print(caminho_arquivo.stem)  # Saída: arquivo.tar

Usando os.path para Versões Antigas do Python

Se você está trabalhando com uma versão do Python anterior à 3.4, pode usar o módulo os.path para alcançar o mesmo resultado. A função os.path.splitext divide o caminho do arquivo em uma tupla contendo o nome do arquivo sem a extensão e a própria extensão. Combine isso com os.path.basename para extrair o nome do arquivo do caminho.

Veja como você pode usar isso:

import os

# Obtém o nome base do arquivo
nome_base_arquivo = os.path.basename("/caminho/para/arquivo.txt")

# Divide o nome do arquivo e a extensão
nome_arquivo_sem_extensao, _ = os.path.splitext(nome_base_arquivo)

print(nome_arquivo_sem_extensao)  # Saída: arquivo

Novamente, lembre-se de que este método removerá apenas a última extensão do nome do arquivo:

nome_base_arquivo = os.path.basename("/caminho/para/arquivo.ext.zip")
nome_arquivo_sem_extensao, _ = os.path.splitext(nome_base_arquivo)

print(nome_arquivo_sem_extensao)  # Saída: arquivo.ext

Criando Sua Própria Solução

Se você precisa de mais controle ou quer remover todas as extensões de um nome de arquivo, você pode criar sua própria função usando os métodos os.path:

import os

def obter_nome_arquivo_sem_extensao(caminho):
    base = os.path.basename(caminho)
    return os.path.splitext(base)[0]

# Exemplo de uso
print(obter_nome_arquivo_sem_extensao("/root/dir/sub/arquivo.ext"))  # Saída: arquivo
print(obter_nome_arquivo_sem_extensao("/root/dir/sub/arquivo.ext.tar.gz"))  # Saída: arquivo.ext.tar

Esta função funcionará de forma semelhante aos exemplos anteriores, mas você pode modificá-la de acordo com suas necessidades específicas.

Resumo

Neste artigo, abordamos como extrair o nome do arquivo sem a extensão de um caminho em Python. Para Python 3.4 e mais recentes, o método pathlib.Path.stem é a maneira mais direta de fazer isso. Para versões anteriores do Python, você pode usar os.path.splitext em combinação com os.path.basename. E se você precisar de uma solução personalizada, sempre pode criar sua própria função usando esses métodos. Lembre-se de que essas técnicas removerão apenas a última extensão se houver várias extensões no nome do arquivo.

Cursos gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Curso
Grátis · 4h 11min

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

0 comentários

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov