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

2024-05-20 10:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更改文件的扩展名,我有两个选择。你知道吗

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

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

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

文件名中不可能有太多的'.'。你知道吗

这两个哪个更好?什么是拇指法则(如果有的话)?你知道吗


Tags: 文件pathnewos文件名filenameoldsplit
2条回答

当您实现它们时,它们是不同的。使用正确的方法:

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

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

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

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

第一个是两个中比较好的。你知道吗

如果文件名中有两个或多个句点,则第二个会出错。你知道吗

相关问题 更多 >