在Python中更改文件扩展名

时间:2010-05-24 20:19:14

标签: python rename file-extension

假设从index.py使用CGI,我有文件foo.fasta来显示文件。我想在显示文件中将foo.fasta的文件扩展名更改为foo.aln。我该怎么办?

9 个答案:

答案 0 :(得分:57)

import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")

其中thisFile =您要更改的文件的绝对路径

答案 1 :(得分:35)

使用pathlib.Path的优雅方式:

from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))

答案 2 :(得分:31)

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)

答案 3 :(得分:18)

从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:)

答案 4 :(得分:13)

使用此:

os.path.splitext("name.fasta")[0]+".aln"

以上是如何运作的:

splitext方法将名称与创建元组的扩展名分开:

os.path.splitext("name.fasta")

创建的元组现在包含字符串" name"和" fasta"。 然后你只需要访问字符串" name"这是元组的第一个元素:

os.path.splitext("name.fasta")[0]

然后你想为这个名字添加一个新的扩展名:

os.path.splitext("name.fasta")[0]+".aln"

答案 5 :(得分:5)

正如AnaPana提到的那样,pathlib在python 3.4中更新,更容易,并且有一个新的with_suffix方法可以轻松解决此问题:

from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')

答案 6 :(得分:2)

可悲的是,我遇到了文件名上有多个点的情况,但splittext效果不佳...我的解决方法是

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)

答案 7 :(得分:1)

使用pathlib并保留完整路径:

from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')

答案 8 :(得分:1)

>> 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'