Python人员使用哪个路径模块或类而不是os.path?

时间:2009-08-10 00:03:41

标签: python path

只是想知道有多少人在Python中使用路径模块,例如Jason Orendorff的路径模块,而不是使用os.path来加入和分割路径?你用过:

我知道Jason的路径模块被制作成PEP 355并被BDFL拒绝。这似乎主要是因为它试图在一个班级中做所有事情。

我们的用例主要是简化路径组件的连接和拆分,所以如果这样的路径类只实现了拆分/连接类型的操作,我们会非常高兴。谁不想这样做:

path(build_dir, path(source_file).name)

或者这个:

build_dir / path(source_file).name

而不是:

os.path.join(build_dir, os.path.basename(source_file))

3 个答案:

答案 0 :(得分:11)

我可以毫不犹豫地选择一个Python程序并解释当前的标准方法 - 它是明确的并且没有歧义:

os.path.join(build_dir, os.path.basename(source_file))

Python的动态类型使得第一种方法在阅读时很难理解:

build_dir / path(source_file).name

另外,划分字符串并不常见,这会带来更多混乱。我怎么知道那两个不是整数?还是漂浮?如果两者都以非字符串类型结束,则不会在运行时获得TypeError。

最后,

path(build_dir, path(source_file).name)

这比os.path方法更好吗?

虽然他们可以“简化”编码(即,使编写更容易),但如果不熟悉替代模块的其他人需要维护代码,那么你将会遇到冲突。

所以我猜我的答案是:我没有使用替代路径模块。 os.path已经拥有了我所需要的一切,它的界面也不错。

答案 1 :(得分:2)

一个简单但有用的技巧是:

  

导入os

     

Path = os.path.join

然后,而不是这个:

  

os.path.join(build_dir,os.path.basename(source_file))

你可以这样做:

  

路径(build_dir,Path(source_file))

答案 2 :(得分:-1)

将字符串划分为连接路径可能看起来像是一个“巧妙的技巧”,但正是Python程序员喜欢避免的那种事情(以及btw,大多数其他语言中的程序员。)os.path模块被广泛使用且容易所有人都理解。另一方面,使用重载运算符执行时髦的事情会令人困惑,这会损害代码的可读性,这是Python的优点之一。

另一方面,C ++程序员喜欢那种东西。也许这就是C ++代码难以阅读的原因之一。