Python-哪个命令更适合更改文件扩展名?

时间:2013-12-02 10:15:28

标签: python performance coding-style standards

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

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

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

两者都提供相同的输出。所以我从oldfile.new

获取了一个名为oldfile.old的新文件

文件名中不可能有太多'.'

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

2 个答案:

答案 0 :(得分: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'

更新

可以用split替换rsplit(..., 1)来电,结果与splitext类似:

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

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

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

答案 1 :(得分:2)

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

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