Obter extensão de ficheiros em Python

Rayven Esplanada 30 janeiro 2023
  1. Utilize o módulo os.path para extrair a extensão de um ficheiro em Python
  2. Utilizar o módulo pathlib para extrair a extensão do ficheiro em Python
Obter extensão de ficheiros em Python

Este tutorial irá introduzir como obter a extensão do ficheiro a partir do nome do ficheiro em Python.

Utilize o módulo os.path para extrair a extensão de um ficheiro em Python

Python tem um módulo os.path que tem funções utilitárias úteis pré-fabricadas para manipular caminhos de ficheiros de SO. Inclui abrir, guardar e actualizar, e obter a informação a partir de caminhos de ficheiros.

Vamos utilizar este módulo para obter a extensão do ficheiro em Python.

O os.path tem uma função splitext() para dividir a raiz e a extensão do caminho do ficheiro dado. A função retorna um tuple contendo a raiz e a extensão da string de extensão.

Vamos fornecer um exemplo de caminho de ficheiro com uma extensão docx.

/Users/user/Documents/sampledoc.docx

O resultado esperado deve ser a extensão .docx.

Declare duas variáveis separadas para capturar o resultado de splitext()denominado extension e root.

import os

path = "/Users/user/Documents/sampledoc.docx"
root, extension = os.path.splitext(path)

print("Root:", root)
print("extension:", extension)

Resultado:

Root: /Users/user/Documents/sampledoc
Extension: .docx

A extensão foi agora devolvida com sucesso ted do caminho do ficheiro raiz.

Utilizar o módulo pathlib para extrair a extensão do ficheiro em Python

pathlib é um módulo Python que contém classes que representam caminhos de ficheiros e implementa funções utilitárias e constantes para estas classes.

pathlib.Path() aceita uma string de caminhos como argumento e devolve um novo objecto Path.

O objecto pathlib.Path tem o atributo suffix que retorna a informação da extensão do ficheiro.

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", path.suffix)

Para além da raiz, podemos também obter o caminho do ficheiro pai e o nome do ficheiro real do caminho do ficheiro dado, simplesmente chamando os atributos parent e name dentro do objecto Path.

Resultado:

Parent: /Users/user/Documents
Filename: sampledoc.docx
Extension: .docx

E se tivermos uma extensão de ficheiro como .tar.gz ou .tar.bz2?

O pathlib também fornece um atributo para ficheiros com múltiplos sufixos como extensões. O atributo suffixes dentro do objecto Path é uma lista que contém todos os sufixos do ficheiro em questão. Se utilizarmos o exemplo acima e imprimirmos o atributo suffixes:

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Suffix(es):", path.suffixes)

Resultado:

Suffix(es): ['.docx']

Assim, mesmo que exista apenas um sufixo, a saída resultará numa lista de um único botão.

Agora tente um exemplo com uma extensão .tar.gz. Para converter a lista numa única string, a função join() pode ser utilizada numa string vazia e aceitar o atributo suffixes como argumento.

import pathlib

path = pathlib.Path("/Users/user/Documents/app_sample.tar.gz")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", "".join(path.suffixes))

Resultado:

Parent: /Users/user/Documents
Filename: app_sample.tar.gz
Extension: .tar.gz

Agora a extensão real é exibida em vez de uma lista.

Em resumo, os dois módulos os e pathlib fornecem métodos convenientes para obter a extensão do ficheiro a partir de um caminho de ficheiro em Python.

O módulo os tem a função splitext para dividir a raiz e o nome do ficheiro a partir da extensão do ficheiro. O pathlib cria um objecto Path e simplesmente armazena a extensão dentro do atributo suffix.

Se estiver a antecipar mais do que uma extensão num ficheiro, seria melhor utilizar pathlib, uma vez que fornece um suporte fácil para múltiplas extensões utilizando o atributo suffixes.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artigo relacionado - Python File