当前位置:  开发笔记 > 编程语言 > 正文

os.path.splitext优于常规.split的好处?

如何解决《os.path.splitext优于常规.split的好处?》经验,为你挑选了4个好方法。

在另一个问题中,投票清楚地表明该os.path.splitext函数比简单的.split('.')[-1]字符串操作更受欢迎.有没有人有时间解释为什么会这样?是更快,更准确,还是什么?我愿意接受它有更好的东西,但我不能立即看到它可能是什么.可能导入整个模块来做这件事有点矫枉过正,至少在简单的情况下呢?

编辑:操作系统特异性是一个巨大的胜利,并不是立即显而易见的; 但即便如此,我也应该看到"如果没有一个点"会怎样的情况!并感谢大家对图书馆使用的一般评论.



1> angry person..:

那么,单独的操作系统有单独的实现.这意味着如果提取文件扩展名的逻辑在Mac上与Linux上的不同,那么这些区别将由这些区别来处理.我不知道有任何这样的区别,所以可能没有.


编辑:@Brian注释一个例子/directory.ext/file当然不适用于简单的.split('.')调用,你必须知道两个目录都可以使用扩展,以及在某些操作系统上,正斜杠是一个有效的目录分隔符这一事实.

这只是强调使用库例程,除非你有充分的理由不参与我的答案.

谢谢@Brian.


此外,如果文件没有扩展名,则必须构建逻辑来处理该情况.如果你试图拆分的东西是一个以反斜杠结尾的目录名怎么办?没有文件名也没有扩展名.

规则应该是除非您有特殊原因不使用符合您需要的库函数,否则请使用它.这将避免您必须维护和修复代码,其他人有完美的解决方案.


在处理完整路径时,平台区分非常重要。例如,“ ./ some.dir / file”显然需要知道“ /”字符是路径分隔符,以便计算出正确的扩展名。split()将以“ .dir / file”作为扩展名。

2> Andrew Grant..:

os.path.splitext将正确处理文件没有扩展名并返回空字符串的情况..split将返回文件的名称.



3> codelogic..:

splitext()反向搜索'.' 并在找到后立即返回扩展部分.split('.')将对所有''进行前瞻性搜索.字符,因此几乎总是较慢.换句话说splitext(),专门为返回扩展而编写split().

(如果要检查实现,请参阅Python源代码中的posixpath.py).


当然这对于`rsplit`是无效的

4> bobince..:

存在不使用'.'的操作系统.作为扩展分隔符.

(值得注意的是,按惯例,RISC OS使用'/',因为'.'在那里用作路径分隔符.)


Jay:这表明文档是错误的,或者没有(还有!!!)用于RISC OS或类似系统的Python实现.无论哪种方式,`splitext`将是这种变化的未来证据,而另一种方法则不会.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有