códigos místicos
supongamos de index.py
con CGI, tengo un archivo de publicación foo.fasta
para mostrar el archivo. quiero cambiar foo.fasta
la extensión de archivo de ser foo.aln
en el archivo de visualización. ¿Cómo puedo hacerlo?
Nikita Malyavin
Una forma elegante de usar pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
-
Aunque el OP no solicitó realizar un cambio de nombre, estaba en las etiquetas, y si va a realizar un cambio de nombre y si es posible, la entrada podría tener una ruta y no solo un nombre de archivo, esta técnica es la correcta. .
– Jason R. Coombs
11 de febrero de 2018 a las 15:51
-
Con respecto a
.with_suffix()
las propiedades.suffix
y.suffixes
debe tener setters.– Polv
16 de julio de 2018 a las 6:50
-
Curiosamente, parece que
.suffix
es de solo lectura, al menos a partir de 3.9.5.– Jesse
13 de mayo a las 22:46
-
@Jesse Paths son inmutables docs.python.org/3/library/pathlib.html#general-properties
– Nikita Malyavin
17 de mayo a las 15:25
Ignacio Vázquez-Abrams
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)
-
¿Puede ser más específico? También vi la documentación antes, pero no funcionó.
– Códigos místicos
24 mayo 2010 a las 21:17
-
Usa la primera función para obtener la base. Combínelo con la nueva extensión y pase el nombre de archivo antiguo y el nuevo nombre de archivo a la segunda función.
– Ignacio Vázquez-Abrams
24 mayo 2010 a las 21:20
-
Corrección:
os.rename(root, root + new_extension)
tiene que leeros.rename(renamee, root + new_extension)
– mloskot
20 de mayo de 2014 a las 10:16
-
en realidad, es mejor usar este método para python3: pathlib.path(pathtofile).with_suffix(“.mynewext”). La forma sugerida con pathlib.path(pathtofile).stem funciona pero eliminará la ruta antes del nombre base.
– Bimo
17 de agosto de 2017 a las 15:59
-
str(pathlib.path(pathtofile).with_suffix(“.mynewext”))
– Bimo
17 de agosto de 2017 a las 16:13
FryDay
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Donde 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
– microonda triste
30 de agosto de 2013 a las 3:45
-
base, _ = os.path.splitext(thisFile)
es más idiomático.– jpmc26
12 dic 2018 a las 20:42
A partir de Python 3.4 hay rutalib biblioteca incorporada. Así 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 🙂
multibuenverso
Utilizar este:
os.path.splitext("name.fasta")[0]+".aln"
Y así es como funciona lo anterior:
El método splitext separa el nombre de la extensión creando una tupla:
os.path.splitext("name.fasta")
la tupla creada ahora contiene las cadenas “nombre” y “fasta”. Luego, solo necesita acceder 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"
mahdi saravi
Como mencionó AnaPana, pathlib es más nuevo y más fácil en python 3.4 y hay un nuevo método with_suffix que puede manejar este problema fácilmente:
from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
PollPenn
Usando pathlib y conservando la ruta completa:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + "https://stackoverflow.com/" + p.stem + '.aln')
-
para hacerlo un poco más simple
new_p = Path(p.with_suffix('').as_posix() + '.aln')
– Jiho Noh
14 mayo 2019 a las 19:35
¿Responde esto a tu pregunta? ¿Cómo reemplazar (o eliminar) una extensión de un nombre de archivo en Python?
– Tomerikoo
26 de mayo de 2021 a las 14:27