• 技术文章 >Python技术 >Python基础教程

    python3 os如何封装posix?

    小妮浅浅小妮浅浅2020-11-19 14:52:51原创2196

    我们知道有些函数不是直接使用的,需要在一定的环境中或者组合其他的函数同时使用,这就涉及了一点嵌套函数的相关知识。而我们今天所说的posix也是同样需要借助python os的封装,才能发挥出它的作用。当然这样说小伙伴们不是很好能理解清楚,下面我们来举个例子就明白了。


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

    下面截取相关代码来看(直接用注释解释了):

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    # 返回一个包含内建模块名字的元组,包含所有已经编译到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学习推荐:PyThon学习网教学中心

    专题推荐:python3os
    上一篇:命令如何在python3 os中运行?有什么区别? 下一篇:python3 os退出报错是什么原因?

    相关文章推荐

    • python3 os如何实现多个程序的运行?• 文件夹删除如何用python3 os解决?• python3 os输出文件路径有哪些方法?• 命令如何在python3 os中运行?有什么区别?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网