关于性能:Python-哪个命令更适合更改文件扩展名?

Python-Which command is better for changing the file extension?

本问题已经有最佳答案,请猛点这里访问。

我正在尝试更改文件的扩展名,我有两个选项。

os.path.splitext(os.path.basename(g_filename))[0] +".new"

os.path.basename(g_filename).split('.')[0] +".new"

两者都给出相同的输出。 所以我从oldfile.old获得一个名为oldfile.new的新文件

不可能在文件名中包含太多'.'

哪两个更好? 什么是拇指规则(如果有的话)?


在实施它们时,它们是不同的。 使用正确的:

1
2
3
4
>>> os.path.splitext(os.path.basename('a.b.c'))[0] + '.new'
'a.b.new'
>>> os.path.basename('a.b.c').split('.')[0] +".new"
'a.new'

更新

可以用rsplit(..., 1)替换split调用,结果类似于splitext

1
2
>>> os.path.basename('a.b.c').rsplit('.', 1)[0] +".new"
'a.b.new'

但是函数之间的差异仍然存在,因为splitext将以点开头的文件名视为没有扩展名,很可能因为这些对于基于unix的os是特殊的:

1
2
3
4
>>> os.path.splitext(os.path.basename('.a'))[0] + '.new'
'.a.new'
>>> os.path.basename('.a').rsplit('.', 1)[0] + '.new'
'.new'


第一个是两者中较好的一个。

如果文件名中有两个或更多个句点,则第二个会被绊倒。