python sub-modules and path-names manipulation
最近我在python中学习了路径名操作,对模块有了基本的了解,下面的陈述使我感到困惑
os和os.path都是模块:(这怎么可能
然后我查看了os.py源代码,发现了以下有启发性的代码行
1
| 57. import posixpath as path |
我的问题是
为什么我应该使用os.path.join('bin','utils')而不是posixpath.join('bin','utils')?
将x和x.y作为两个模块以及何时应用此技术的简单方法是什么?
-
相关:stackoverflow.com/questions/2724348/…"os.path名称是Posix系统上此模块的别名;在其他系统(例如Mac,Windows)上,os.path以特定于该平台的方式提供相同的操作,并且是另一个模块的别名(例如 macpath,ntpath)"
-
如果你看一下import posixpath as path的上下文,你会发现只有当脚本在Posix系统上运行时才会发生。 posixpath不打算由普通用户代码直接使用,您应该让os为您处理这些细节。 否则,您的脚本将无法在非Posix系统上运行。
-
我发布了答案,感谢@Chris_Rands和@PM 2Ring指出了这一点。 虽然有人仍然可以使用posixpath,但如果确切知道他/她正在做什么,那么os.path是最好的选择
使用os.path.join('bin','utils')代替posixpath.join('bin','utils')
我发现使用os.path更直接使用posixpath。
os.path提供与不同操作系统的兼容性。 来自os.py的简化代码
1 2 3 4 5 6 7
| if 'posix' == os.name :
from posix import *
import posixpath as path
elif 'nt' == os.name :
from nt import *
import ntpath as path
.... |
正如您所看到的,使用os.path将确保您正在操作当前操作系统细节的路径。