Mys*_*des 55 python file-extension rename
假设从index.py
CGI,我有帖子文件foo.fasta
显示文件.我想将foo.fasta
文件扩展名更改为foo.aln
显示文件.我该怎么做?
小智 62
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Run Code Online (Sandbox Code Playgroud)
其中thisFile =您正在更改的文件的绝对路径
Nik*_*vin 50
使用pathlib.Path的优雅方式:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Run Code Online (Sandbox Code Playgroud)
Ign*_*ams 39
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)
Run Code Online (Sandbox Code Playgroud)
Ana*_*ana 21
从Python 3.4开始,有pathlib内置库.所以代码可能是这样的:
from pathlib import Path
filename = "mysequence.fasta"
new_filename = Path(filename).stem + ".aln"
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/3.4/library/pathlib.html#pathlib.PurePath.stem
我喜欢pathlib :)
mul*_*rse 14
用这个:
os.path.splitext("name.fasta")[0]+".aln"
Run Code Online (Sandbox Code Playgroud)
以下是上述工作原理:
splitext方法将名称与创建元组的扩展名分开:
os.path.splitext("name.fasta")
Run Code Online (Sandbox Code Playgroud)
创建的元组现在包含字符串"name"和"fasta".然后你只需要访问字符串"name",它是元组的第一个元素:
os.path.splitext("name.fasta")[0]
Run Code Online (Sandbox Code Playgroud)
然后你想为这个名字添加一个新的扩展名:
os.path.splitext("name.fasta")[0]+".aln"
Run Code Online (Sandbox Code Playgroud)
小智 7
正如 AnaPana 提到的 pathlib 在 python 3.4 中更新更容易,并且有新的 with_suffix 方法可以轻松处理这个问题:
from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
Run Code Online (Sandbox Code Playgroud)