当前位置: 首页 > 面试题库 >

os.path.splitext优于常规.split吗?

慕容聪
2023-03-14
问题内容

在另一个问题中,票数清楚地表明,该os.path.splitext函数比简单的.split('.')[-1]字符串操作更受青睐。有谁有时间确切解释为什么?是更快或更准确,还是什么?我愿意接受它有更好的东西,但是我无法立即看到它可能是什么。至少在简单的情况下,导入整个模块来执行此操作可能会过大吗?

编辑:操作系统的特殊性是一个巨大的胜利,这不是立即显而易见的。但即使我也应该看到“如果没有一个点怎么办”案例!并感谢大家对图书馆使用的一般性评论。


问题答案:

好吧,对于单独的操作系统,有单独的实现。这意味着,如果Mac上提取文件扩展名的逻辑与Linux上提取的逻辑不同,则这些区别将由这些东西来处理。我不知道有什么区别,所以可能没有。

编辑
:@Brian评论说,像这样的示例/directory.ext/file当然不能通过简单的.split('.')调用工作,并且您必须知道目录可以使用扩展名,以及在某些操作系统上正斜杠是有效的目录分隔符的事实。

这只是强调 使用库例程,除非您有充分的理由不接受 我的回答。

谢谢

此外,如果文件没有扩展名,则必须构建逻辑来处理这种情况。而且,如果您尝试拆分的是目录名称以反斜杠结尾的怎么办?没有文件名或扩展名。

规则应该是除非您有特定的理由不使用满足您需要的库函数,否则请使用它。这样可以避免您不得不维护和修正其他人拥有完美解决方案的代码。



 类似资料:
  • 问题内容: npm允许我们指定,但是这样做有什么好处?我猜想我们是否要绝对确保即使删除了我们引用的模块也可以得到正确的版本,或者捆绑有速度方面的好处? 有人知道超过普通依赖项的好处吗? 问题答案: 目前,Node最大的问题之一是它的变化速度如何。这意味着生产系统可能非常脆弱,并且很容易损坏东西。 使用bundledDependencies是解决此问题的一种方法,可以确保在正确猜测的情况下,无论其他

  • 问题内容: 上次(由其他用户)提出此问题时,答案为: 如果这是正在运行的活动,则可以使用Timer / TimerTask和Handler,也可以使用postDelayed()和AsyncTask。 我还在学习如何编程android。我已经了解了包括线程在内的各种技能,并且我的代码有很多问题。任何人都可以举一个使用方法的示例:时间/计时器任务和处理程序或postDelayed()和AsyncTas

  • 使用情况数据 共享使用情况数据 如果你想让设备发送有关你如何使用 Navicat Data Modeler 的信息来帮助我们进行改进,可勾选这个选项。你可以点击“使用情况数据”按钮来查看正在共享的信息。 更新 自动检查更新 勾选这个选项允许 Navicat Data Modeler 在已选择的时间自动检查新的版本。 包括匿名的系统配置文件 如果你想在 Navicat Data Modeler 检查

  • 常规 布景主题 选择使用 Windows OS 的布景主题还是深色主题。 【提示】需要重新启动 Navicat Data Modeler 才生效。 语言 选择 Navicat Data Modeler 界面显示的语言。 【提示】需要重新启动 Navicat Data Modeler 才生效。 显示工具栏标题 在 Navicat Data Modeler 工具栏按钮显示文本。否则,只有按钮显示。 【

  • 常规 布景主题 选择使用 Windows OS 的布景主题还是深色主题。 【提示】需要重新启动 Navicat 才生效。 语言 选择 Navicat 界面显示的语言。 【提示】需要重新启动 Navicat 才生效。 允许重复运行 Navicat 如果你想打开多个 Navicat 实例,可勾选这个选项。取消勾选此项目意味著当双击 Navicat 快捷方式时,将会重新启动正在运行的 Navicat 实

  • 主窗口 在导航窗格中的模式下显示对象 在导航窗格使用树状结构显示数据库对象。若要展开節點,简单地双击它。 【提示】需要重新打开数据库或模式才生效。 字体 定义对象列表使用的字体和字体大小。 使用默认字体 若要使用默认的字体设置,可勾选这个选项。 数据库项目 如果表没有主键,则发出警告 当打开没有设置主键的表时,如果你需要通知,可勾选这个选项。 显示函数向导 当你创建新的函数或过程时,显示函数向导(