2024-05-20 10:25:57 发布
网友
我正在尝试更改文件的扩展名,我有两个选择。你知道吗
os.path.splitext(os.path.basename(g_filename))[0] + ".new"
os.path.basename(g_filename).split('.')[0] + ".new"
两者的输出相同。所以我从oldfile.old得到一个名为oldfile.new的新文件
oldfile.old
oldfile.new
文件名中不可能有太多的'.'。你知道吗
'.'
这两个哪个更好?什么是拇指法则(如果有的话)?你知道吗
当您实现它们时,它们是不同的。使用正确的方法:
>>> 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:
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'
第一个是两个中比较好的。你知道吗
如果文件名中有两个或多个句点,则第二个会出错。你知道吗
当您实现它们时,它们是不同的。使用正确的方法:
更新
可以用
rsplit(..., 1)
替换split
调用,结果类似于splitext
:但函数之间仍然存在差异,因为
splitext
将以点开头的文件名视为没有扩展名,这很可能是因为这些文件名对于基于unix的操作系统是特殊的:第一个是两个中比较好的。你知道吗
如果文件名中有两个或多个句点,则第二个会出错。你知道吗
相关问题 更多 >
编程相关推荐