Supongamos que desde index.py
con CGI, tengo el archivo foo.fasta
para mostrar el archivo. Quiero cambiar la extensión de archivo foo.fasta
para que sea foo.aln
en el archivo de visualización. ¿Cómo puedo hacerlo?Cambiando la extensión de archivo en Python
Respuesta
os.path.splitext()
, os.rename()
por ejemplo:
# renamee is the file getting renamed, pre is the part of file name before extension and ext is current extension
pre, ext = os.path.splitext(renamee)
os.rename(renamee, pre + new_extension)
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Dónde thisFile = la ruta absoluta del archivo que está cambiando
Me gusta más esta respuesta porque proporciona un ejemplo y no solo cita los métodos necesarios para realizar la tarea. Gracias @FryDay – sadmicrowave
Utilice esta:
os.path.splitext("name.fasta")[0]+".aln"
Y aquí es cómo lo anterior funciona:
El método splitext separa el nombre de la extensión de la creación de una tupla:
os.path.splitext("name.fasta")
la tupla creado ahora contiene las cuerdas "nombre" y "FASTA". Luego hay que acceder sólo a la cadena "nombre", que es el primer elemento de la tupla:
os.path.splitext("name.fasta")[0]
Y luego desea agregar una nueva extensión a ese nombre:
os.path.splitext("name.fasta")[0]+".aln"
A partir de Python 3.4 hay pathlib biblioteca incorporada. Por lo que el código podría ser algo como:
from pathlib import Path
filename = "mysequence.fasta"
new_filename = Path(filename).stem + ".aln"
https://docs.python.org/3.4/library/pathlib.html#pathlib.PurePath.stem
Me encanta :) pathlib
¡Esta es una lib realmente genial! ¡Gracias! –
Esto es aún mejor con la sintaxis de interpolación de cadenas de Python 3.6 (https://www.python.org/dev/peps/pep-0498/) 'new_filename = f" {Path (filename) .stem} .aln "' –
Tenga cuidado: el tallo también retiene el camino si hay uno presente. Si desea cambiar el nombre del archivo y si se proporcionó una ruta (lo que sin duda no estaba en la pregunta), esta técnica fallaría. –
Una forma elegante utilizando pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Aunque OP no pidió realizar un cambio de nombre, estaba en las etiquetas, y si va a realizar un cambio de nombre y si es posible, la entrada puede tener una ruta y no solo un nombre de archivo, esta técnica es la correcta uno. –
- 1. Obtener nombre del archivo sin la extensión en Python
- 2. Cambiando una implementación de función en Python
- 3. Obteniendo la extensión de archivo en C
- 4. Comprobar la extensión de archivo en Java
- 5. Obtener extensión del archivo sin proporcionar extensión en la ruta
- 6. Cambiando de python-mode.el a python.el
- 7. Métodos de extensión en Python
- 8. Extensión de Chrome en python?
- 9. Instalar la extensión de Python en la ubicación específica
- 10. Agregar extensión de archivo a archivo de extensión-menos
- 11. cambiando la variable global al multiprocesamiento en python
- 12. Retire la extensión del archivo en Java
- 13. extensión de archivo MAKE
- 14. Extensión de archivo JSON
- 15. extensión de archivo MAKE
- 16. Retire la extensión de un archivo
- 17. Carrierwave cómo obtener la extensión de archivo
- 18. Extienda la extensión de archivo UITableView
- 19. ¿Cuál es el nombre de archivo de configuración estándar y la extensión en Python?
- 20. Obtener ImageFormat desde la extensión de archivo
- 21. ¿Qué es la extensión de archivo .MSPX?
- 22. Tipo de archivo - Obtener la extensión original
- 23. Asociar la extensión de archivo con la aplicación en wp7.1
- 24. Extensión README para proyectos Python
- 25. cambiando el código de Python en el depurador
- 26. Archivo por lotes - Eliminar la segunda extensión de archivo
- 27. Descarga un archivo cambiando window.location w/Safari
- 28. Guardar archivo con la aplicación mac - extensión de archivo
- 29. Visual Studio sigue cambiando el archivo project.sln
- 30. Obtener icono grande desde la extensión de archivo
¿Puede ser más específico, vi la documentación antes también, pero no funcionó. – MysticCodes
Usa la primera función para obtener la base. Combínelo con la nueva extensión y pase el nombre de archivo anterior y el nuevo nombre de archivo a la segunda función. –
Corrección: 'os.rename (root, root + new_extension)' debería leer 'os.rename (renamee, root + new_extension)' – mloskot