Предположим, что из index.py
с CGI у меня есть файл сообщения foo.fasta
для отображения файла. Я хочу изменить расширение файла foo.fasta
как foo.aln
в отображаемом файле. Как я могу это сделать?
Изменение расширения файла в Python
Ответ 1
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Где thisFile = абсолютный путь к файлу, который вы меняете
Ответ 2
os.path.splitext()
, os.rename()
p >
например:
# 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)
Ответ 3
Элегантный способ использования pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Ответ 4
Начиная с Python 3.4 там pathlib встроенная библиотека. Таким образом, код может выглядеть примерно так:
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
Я люблю pathlib:)
Ответ 5
Используйте это:
os.path.splitext("name.fasta")[0]+".aln"
И вот как это работает:
Метод splitext отделяет имя от расширения, создающего кортеж:
os.path.splitext("name.fasta")
созданный кортеж теперь содержит строки "имя" и "fasta". Затем вам нужно получить доступ только к строке "name", которая является первым элементом кортежа:
os.path.splitext("name.fasta")[0]
И затем вы хотите добавить новое расширение к этому имени:
os.path.splitext("name.fasta")[0]+".aln"
Ответ 6
Использование pathlib и сохранение полного пути:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')