假设从 index.py与 CGI,我有后文件 foo.fasta显示文件。我想改变 foo.fasta的文件扩展名为 foo.aln在显示文件。我该怎么做?
index.py
foo.fasta
foo.aln
os.path.splitext() ,< a href = “ http://docs.python.org/library/os.html # os.rename”rel = “ noReferrer”> os.rename()
os.path.splitext()
os.rename()
例如:
# 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")
其中 this File = 要更改的文件的绝对路径
用这个:
os.path.splitext("name.fasta")[0]+".aln"
以下是上述方法的原理:
Splitext 方法将名称与创建元组的扩展分隔开:
os.path.splitext("name.fasta")
创建的 tuple 现在包含字符串“ name”和“ fast”。 然后您只需要访问元组的第一个元素字符串“ name”:
os.path.splitext("name.fasta")[0]
然后你要给这个名字添加一个新的扩展名:
从 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
我爱 Pathlib:)
使用 Pathlib 路径的一种优雅方式:
from pathlib import Path p = Path('mysequence.fasta') p.rename(p.with_suffix('.aln'))
使用 pathlib 并保留完整路径:
from pathlib import Path p = Path('/User/my/path') new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
AnaPana 提到的 pathlib 在 python 3.4中更新、更容易,并且有一个新的 with _ affix 方法可以轻松处理这个问题:
from pathlib import Path new_filename = Path(mysequence.fasta).with_suffix('.aln')
遗憾的是,我经历了一个文件名上多个点的情况,分割文本不能很好地工作... 我的工作围绕:
file = r'C:\Docs\file.2020.1.1.xls' ext = '.'+ os.path.realpath(file).split('.')[-1:][0] filefinal = file.replace(ext,'') filefinal = file + '.zip' os.rename(file ,filefinal)
>> file = r'C:\Docs\file.2020.1.1.xls' >> ext = '.'+ os.path.realpath(file).split('.')[-1:][0] >> filefinal = file.replace(ext,'.zip') >> os.rename(file ,filefinal)
重复扩展的错误逻辑,示例: ‘ C: Docs. xls _ aaa. xls.xls’