美文网首页pythonPython
Python导入上一级/下一级/任一级目录下的.py文件问题

Python导入上一级/下一级/任一级目录下的.py文件问题

作者: 西北小生_ | 来源:发表于2020-08-05 22:13 被阅读0次

    有如下目录:

    -python
    ----file1
    ---------file1_1
    ------------------pfile1_1.py
    ---------pfile1.py
    ----file2
    ---------pfile2.py
    ----pfile.py
    ----data.py
    

    即python文件夹下有file1, file2, pfile.py, data.py,文件夹file1下又有file1_1, pfile1.py, 文件夹file2下有pfile2.py,文件夹file1_1下又有pfile1_1.py。

    1.导入下一级/多级目录

    在文件pfile.py中导入pfile1.py, pfile2.py或 pfile1_1.py,并使用其中的函数(假设函数名分别文fun1(), fun2(), fun1_1()):

    # 当前路径:/home/puxitong/python/
    
    # 导入同级目录下的data.py
    import data
    
    # 导入下一级目录file1下的pfile1.py
    from file1 import pfile1
    pfile1.fun1()
    
    # 导入下一级目录file2下的pfile2.py
    from file2 import pfile2
    pfile2.fun2()
    
    # 导入下一级目录file2下的pfile1.py中的函数fun1()
    from file1.pfile1 import fun1
    fun1()
    
    # 导入下两级目录file1/file1_1/下的pfile1_1.py
    from file1.file1_1 import pfile1_1
    pfile1_1.fun1_1()
    
    可以看出,导入同级目录下的文件时,格式为:

    import 文件名

    导入下一级目录下的文件时,格式为:

    from 文件夹名 import 文件名

    导入下二级目录下的文件时,格式为:

    from 下一级文件夹名.下二级文件夹名 import 文件名

    导入下多级目录下的文件时以此类推,即:

    from 文件夹1.文件夹2.文件夹3. .. .文件夹n import 文件名

    需要注意的是,这种导入方式下,如果要用导入的文件中的函数或者类,需要在其前面加上文件名,即 "文件名.函数名" 的形式

    我们也可以只导入需要的函数或类,格式为:

    from 文件夹名.文件名 import 函数1,函数2,类1,…

    有些教程里面说,需要在下一级目录下新建一个空的python文件命名为 __init__.py,但我在运行时发现不建一个文件也会导入成功。

    2.导入上一级/任一级目录

    -python
    ----file1
    ---------file1_1
    ------------------pfile1_1.py
    ---------pfile1.py
    ----file2
    ---------pfile2.py
    ----pfile.py
    ----data.py
    

    如果要在pfile1.py中调用pfile.py 和 pfile2.py,因为当前路径是 '/home/puxitong/python/file1/' ,而 pfile.py和pfile1.py在路径'/home/puxitong/python/' 及其子路径下,这里的思路是将上一级目录 '/home/puxitong/python/' 添加在系统路径中,可以直接访问pfile.py,然后将pfile2.py 按照下一级路径导入方式进行导入:

    # 当前路径:/home/puxitong/python/file1/
    
    # 导入pfile.py前先将其路径添加到系统路径中
    import sys
    sys.path.append('/home/puxitong/python/')
    
    # 导入pfile.py
    import pfile
    
    # 导入pfile2.py
    from file1 import pfile2
    
    

    如果要在pfile1_1.py中导入pfile.py, pfile1.py, pfile2.py呢? 原理是一样的,即将文件pfile.py所在路径添加到系统路径中,可直接导入pfile.py, 再按照下级文件导入方式导入pfile1.py和pfile2.py:

    # 当前路径:/home/puxitong/python/file1/file1_1/
    
    # 导入pfile.py前先将其路径添加到系统路径中
    import sys
    sys.path.append('/home/puxitong/python/')
    
    # 导入pfile.py
    import pfile
    
    # 导入pfile1.py
    from file2 import pfile1
    
    # 导入pfile2.py
    from file2 import pfile2
    
    自然地,导入任意.py文件时,只需要在导入该文件前用

    sys.path.append('该文件所在的绝对路径')

    将该文件所在的绝对路径添加到系统路径中,再进行同级目录或下级目录导入方式导入即可.

    相关文章

      网友评论

        本文标题:Python导入上一级/下一级/任一级目录下的.py文件问题

        本文链接:https://www.haomeiwen.com/subject/gbflrktx.html