Python人员使用哪个路径模块或类来代替os.path?
只是想知道有多少人使用Python中的路径模块,比如Jason Orendorff的模块,而不是使用Python人员使用哪个路径模块或类来代替os.path?,python,path,Python,Path,只是想知道有多少人使用Python中的路径模块,比如Jason Orendorff的模块,而不是使用os.path来连接和分割路径?您是否使用过: (为政治公众人物355更新) ,基本上是上述内容的更现代版本 它是tuple而不是str的子类 我知道Jason的路径模块被BDFL制作并拒绝。这似乎主要是因为它试图在一节课上做所有的事情 我们的用例主要是简化路径的连接和拆分组件,因此如果这样的路径类只实现拆分/联接类型的操作,我们会非常高兴。谁不想这样做: path(build_dir, pa
os.path
来连接和分割路径?您是否使用过:
- (为政治公众人物355更新)
- ,基本上是上述内容的更现代版本
- 它是tuple而不是str的子类
path(build_dir, path(source_file).name)
或者这个:
build_dir / path(source_file).name
与此相反:
os.path.join(build_dir, os.path.basename(source_file))
我可以拿起一个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已经具备了我所需要的一切,它的界面也不错。分割字符串以连接路径可能看起来像是一个“巧妙的技巧”,但正是Python程序员喜欢避免的事情(顺便说一句,大多数其他语言中的程序员也是如此。)os.path模块被广泛使用,并且容易被所有人理解。另一方面,用重载操作符做一些令人困惑的事情,它会损害代码的可读性,而这正是Python的优点之一
另一方面,C++程序员喜欢这种东西。也许这是C++代码难以阅读的原因之一。 < P>一个简单但有用的技巧是: 导入操作系统 Path=os.Path.join 然后,与此相反:
os.path.join(build_dir, os.path.basename(source_file))
join(build_dir,os.path.basename(源文件))
您可以这样做:
路径(生成目录,路径(源文件))
听!标准os.path模块没有什么可怕的错误,可以保证向项目中添加更多依赖项。如果您有一个特别棘手的路径构造问题,比如从对象层次结构中构造路径,那么为什么不将其包装到函数中呢?下一个程序员将感谢您封装了它,感谢您没有让他学习和调试整个其他模块。谢谢您的回答,Matthew。很好的评论,塞伦:你把东西分解成函数是对的——这已经简化了我的脚本。事实上,我认为你们两个已经说服了我们。另外,如果我们只想更简洁一点,我想总有“从操作系统导入路径”的。没有歧义,没错,但写和读都很痛苦。我宁愿处理Java之类的不可变路径对象,而不是字符串。例如:
使用build_dir.child('config.yaml').open()作为f
vs使用open(os.path.join(build_dir,'config.yaml'))作为f
——逻辑流从左到右更加一致,嵌套的括号更少,因此更易于阅读和理解。我一直都这样做,但我使用pj
,而不是path
)您是否愿意解释为什么可以用另一个path=os.path.join
实例替换os.path.basename
?因为对我来说,os.path.join(r“C:\Build”,os.path.basename(r“D:\Source\code.py”)
返回'C:\\Build\\code.py'
,而路径(r“C:\Build”,path(r“D:\Source\code.py”)
返回'D:\\Source\\code.py'
。看起来像是这样的。