知行编程网知行编程网  2022-12-13 19:00 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python3 os如何封装posix?的相关知识,希望可以帮到处于编程学习途中的小伙伴


python3 os是怎么封装posix的?

我们知道有些函数是不能直接使用的,需要在一定的环境下使用,或者同时和其他函数结合使用,这就涉及到一些嵌套函数的知识。而我们今天说的posix也需要python os的封装才能发挥作用。当然,朋友们要理解清楚也不是很容易。我们举个例子来理解。


通过 help(os) 可以找到源文件查看,


python3 os是怎么封装posix的?




下面截取相关代码来看

(直接用注释解释了):

# 返回一个包含内建模块名字的元组,包含所有已经编译到Python解释器的模块名字
_names = sys.builtin_module_names
# __all__ 只影响到了 from <module> import * 这种导入方式
def _get_exports_list(module):
    try:
        return list(module.__all__)
    except AttributeError:
        return [n for n in dir(module) if n[0] != '_']
# 判断当前操作系统类型
# posix代表类Unix系统,nt表示Windows系统
# 我们的 macOS 就是类Unix系统,只截取这部分代码
if 'posix' in _names:
    name = 'posix' # 表示操作系统类型
    linesep = '\n' # 定义了当前平台使用的行终止符
    # os模块其实就是对posix或nt模块的二次封装,这样的好处就是实现了对不同平台的兼容
    from posix import *
    try:
        from posix import _exit
        __all__.append('_exit')
    except ImportError:
        pass
    import posixpath as path # 我们常用的os.path实际上是ntpath或者posixpath模块
 
    try:
        from posix import _have_functions
    except ImportError:
        pass
 
    import posix
    __all__.extend(_get_exports_list(posix))
del posix


现在我们知道在macos平台上,os模块其实就是对posix模块的封装。


通过代码案例我们可以看出,使用python os封装posix后,就可以解决不同平台的兼容问题了,是不是很神奇~

更多Python学习推荐:




本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享