Estoy trabajando en python con os.path.splitext()
y me resulta curioso si es posible separar nombres de archivos de extensiones con múltiples "."? p.ej. "foobar.aux.xml" utilizando splitext. Los nombres de archivo varían desde [foobar, foobar.xml, foobar.aux.xml]. ¿Hay una mejor manera?Separación de extensiones de archivos mediante el módulo python os.path
Respuesta
dividido con os.extsep
.
>>> import os
>>> 'filename.ext1.ext2'.split(os.extsep)
['filename', 'ext1', 'ext2']
Si usted quiere todo después de que el primer punto:
>>> 'filename.ext1.ext2'.split(os.extsep, 1)
['filename', 'ext1.ext2']
Si está utilizando caminos con los directorios que pueden contener puntos:
>>> def my_splitext(path):
... """splitext for paths with directories that may contain dots."""
... li = []
... path_without_extensions = os.path.join(os.path.dirname(path), os.path.basename(path).split(os.extsep)[0])
... extensions = os.path.basename(path).split(os.extsep)[1:]
... li.append(path_without_extensions)
... # li.append(extensions) if you want extensions in another list inside the list that is returned.
... li.extend(extensions)
... return li
...
>>> my_splitext('/path.with/dots./filename.ext1.ext2')
['/path.with/dots./filename', 'ext1', 'ext2']
O 'os.path.extsep' si eso resulta conveniente. –
@Artur Gaspar: ¿es esto posible sin saber la cadena exacta? Entonces, ¿podría separar todos los archivos en un directorio o con un comodín? – KennyC
@KennyC Debería funcionar para todos los nombres de archivos sin la ruta completa (solo nombre de archivo). La función my_splitext que agregué a la respuesta debería funcionar con todas las rutas. Si quieres comodines debes usar el módulo 'glob'. –
podría intentar con:
names = pathname.split('.')
filename = names[0]
extensions = names[1:]
si desea utilizar splitext, se puede usar algo como:
import os
path = 'filename.es.txt'
while True:
path, ext = os.path.splitext(path)
if not ext:
print path
break
else:
print ext
produce:
.txt
.es
filename
De la ayuda de la función:
La extensión es todo desde el último punto hasta el final, ignorando los puntos iniciales.
Así que la respuesta es no, no puede hacerlo con esta función.
Si desea dividir fuera de cualquier número de extensiones al final, puede crear una función como esta:
def splitext_recurse(p):
base, ext = os.path.splitext(p)
if ext == '':
return (base,)
else:
return splitext_recurse(base) + (ext,)
y usarlo de esta manera:
>>> splitext_recurse("foobar.aux.xml")
('foobar', '.aux', '.xml')
El proceso es aproximadamente el mismo si solo quiere una extensión larga, como '('foobar', '.aux.xml')'. –
- 1. Python Eliminando ciertas extensiones de archivos
- 2. Python os.path es ntpath, ¿cómo?
- 3. ¿Qué módulo de camino o clase usan los usuarios de Python en lugar de os.path?
- 4. os.path equivalente para urls web en python?
- 5. Os.path: ¿Puedes explicar este comportamiento?
- 6. Combinación de archivos de módulo en Python
- 7. Extensiones Python y OpenMP C
- 8. Extensiones/módulos anidados de Python C?
- 9. Usando os.path de Python, ¿cómo puedo subir un directorio?
- 10. ¿Debo usar `import os.path` o` import os`?
- 11. Separación de cadenas en Python usando regex
- 12. python para extensiones de Firefox?
- 13. Magento, ¿cómo deshabilitar el módulo mediante programación?
- 14. Perfilando extensiones python C
- 15. Python: reemplace el espacio de no separación en Unicode
- 16. UTI y asociaciones de extensiones de archivos
- 17. Restringir la carga de archivos a algunas extensiones de archivos
- 18. Carga de archivos en el módulo joomla
- 19. Asociando extensiones de archivos con un programa
- 20. Diferentes extensiones de archivos para diferentes versiones
- 21. Rutas ASP.NET MVC con "Extensiones de archivos"
- 22. python "módulo de cadena"?
- 23. asociaciones de archivos de Eclipse para extensiones con múltiples períodos
- 24. Extensiones de velocidad de Python en C contra C
- 25. Extensiones de archivos múltiples en OpenFileDialog
- 26. resaltado de sintaxis para archivos sin extensiones
- 27. Desarrollo del módulo de Python
- 28. Extensiones Django mensaje de error
- 29. Proxies con el módulo 'Solicitudes' de Python
- 30. Python y el módulo hashlib
@ Nick, no del todo. Él quiere manejar nombres de archivo con múltiples extensiones. –
'os.path.splitext()' dividirá correctamente '" foobar.aux.xml "' en '" foobar.aux "' y '" .xml "'. ¿Quieres/necesitas algo más? – martineau