Pregunta Extrayendo la extensión del nombre de archivo en Python


¿Hay una función para extraer la extensión de un nombre de archivo?


885
2018-02-12 14:11


origen


Respuestas:


Sí. Utilizar os.path.splitext(ver Documentación de Python 2.X o Documentación de Python 3.X)

>>> import os
>>> filename, file_extension = os.path.splitext('/path/to/somefile.ext')
>>> filename
'/path/to/somefile'
>>> file_extension
'.ext'

1408
2018-02-12 14:12



import os.path
extension = os.path.splitext(filename)[1]

308
2018-02-12 14:15



Nuevo en la versión 3.4.

import pathlib

print(pathlib.Path('yourPathGoesHere').suffix)

Me sorprende que nadie haya mencionado pathlib todavía, pathlib ¡Es increíble!

Si necesita todos los sufijos (por ejemplo, si tiene .tar.gz), .suffixes devolverá una lista de ellos!


93
2018-02-03 21:41



import os.path
extension = os.path.splitext(filename)[1][1:]

Para obtener solo el texto de la extensión, sin el punto.


77
2017-08-26 09:37



Una opción puede ser partir de punto:

>>> filename = "example.jpeg"
>>> filename.split(".")[-1]
'jpeg'

Ningún error cuando el archivo no tiene una extensión:

>>> "filename".split(".")[-1]
'filename'

Pero debes tener cuidado:

>>> "png".split(".")[-1]
'png'    # But file doesn't have an extension

54
2018-04-09 18:48



vale la pena agregar una cifra más baja para que no se pregunte por qué los JPG no se muestran en su lista.

os.path.splitext(filename)[1][1:].strip().lower()

26
2017-12-28 07:25



Cualquiera de las soluciones anteriores funciona, pero en Linux he encontrado que hay una nueva línea al final de la cadena de extensión que evitará que las coincidencias tengan éxito. Añade el strip() método hasta el final. Por ejemplo:

import os.path
extension = os.path.splitext(filename)[1][1:].strip() 

10
2017-10-10 22:48



Con splitext hay problemas con los archivos con doble extensión (p. file.tar.gz, file.tar.bz2, etc.)

>>> fileName, fileExtension = os.path.splitext('/path/to/somefile.tar.gz')
>>> fileExtension 
'.gz'

pero debería ser: .tar.gz

Las posibles soluciones son aquí


9
2018-02-05 00:19



filename='ext.tar.gz'
extension = filename[filename.rfind('.'):]

7
2018-02-18 10:55



Aunque es un tema antiguo, pero me pregunto por qué no hay ninguno que mencione una api muy simple de Python llamada rpartition en este caso:

para obtener la extensión de una ruta absoluta de archivo determinada, simplemente puede escribir:

filepath.rpartition('.')[-1]

ejemplo:

path = '/home/jersey/remote/data/test.csv'
print path.rpartition('.')[-1]

te dará: 'csv'


5
2018-02-27 03:53