• Python基础之获取路径与切换路径


    一直以为我写了关于路径有关的博客,看了一圈才发现没写,那么现在就来整理下。

    一、获取当前路径

      os.getcwd()

    二、获取当前文件路径:(__file__是当前执行文件)

      os.path.abspath(__file__)

    三、获取主程序路径

      os.path.abspath(sys.argv[0])

    四、获取主程序目录

      os.path.abspath(sys.path[0])

    接下来举个例子看下,创建了两个文件,运行play.py程序。

    play.py

    #!/usr/bin/env python
    # _*_ coding: UTF-8 _*_
    """=================================================
    @Project -> File    : Operate_system_ModeView_structure -> play.py
    @IDE     : PyCharm
    @Author  : zihan
    @Date    : 2020/5/11 14:40
    @Desc    :
    ================================================="""
    from play1 import *
    
    
    if __name__ == '__main__':
        # 获取当前路径
        print("打印当前路径:", end='')
        print(os.getcwd())
    
        # 获取当前文件的路径(__file__是当前执行的文件)
        print("打印当前文件路径:", end='')
        print(os.path.abspath(__file__))
    
        # 用play1.py里面的函数打印__file__的路径
        print("打印当前文件路径(1):", end='')
        print_file_path()
    
        # 打印主程序的路径
        print("打印主程序路径:", end='')
        print(os.path.abspath(sys.argv[0]))
    
        # 用play1.py里面的函数打印主程序路径
        print("打印主程序路径(1):", end='')
        print_main_path()
    
        # 打印主程序目录
        print("打印主程序目录:", end='')
        print(os.path.abspath(sys.path[0]))

    play1.py

    #!/usr/bin/env python
    # _*_ coding: UTF-8 _*_
    """=================================================
    @Project -> File    : Operate_system_ModeView_structure -> play1.py
    @IDE     : PyCharm
    @Author  : zihan
    @Date    : 2020/5/11 14:58
    @Desc    :
    ================================================="""
    import os
    import sys
    
    
    def print_file_path():
        print(os.path.abspath(__file__))
    
    
    def print_main_path():
        print(os.path.abspath(sys.argv[0]))

    运行结果:

    打印当前路径:F:gitplayOperate_system_ModeView_structure20200511路径问题总结
    打印当前文件路径:F:gitplayOperate_system_ModeView_structure20200511路径问题总结play.py
    打印当前文件路径(1):F:gitplayOperate_system_ModeView_structure20200511路径问题总结play1.py
    打印主程序路径:F:gitplayOperate_system_ModeView_structure20200511路径问题总结play.py
    打印主程序路径(1):F:gitplayOperate_system_ModeView_structure20200511路径问题总结play.py
    打印主程序目录:F:gitplayOperate_system_ModeView_structure20200511路径问题总结

    要区分目录和文件路径:

    1. os.getcwd()获取的是当前路径,得到的是当前目录,如果在程序运行过程中有路径切换,那么执行os.getcwd()得到的值是不同的

    2. __file__是当前执行的文件,打印__file__的路径,就是当前文件的路径

    3. sys.argv[0]是主文件的路径,不管引用了多少个py文件,它始终都是主文件的路径,不会变。

    4. sys.path[0]是主程序的目录路径,它同样始终都是主程序的目录,不会变。

    参考链接:https://www.cnblogs.com/xiyuan2016/p/9187695.html

    五、获取上级目录

      os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
      os.path.abspath(os.path.dirname(os.getcwd()))
      os.path.abspath(os.path.join(os.getcwd(), ".."))

    六、获取上上级目录

      os.path.abspath(os.path.join(os.getcwd(), "../.."))

    七、切换路径

      os.chdir(path)

    play.py

    #!/usr/bin/env python
    # _*_ coding: UTF-8 _*_
    """=================================================
    @Project -> File    : Operate_system_ModeView_structure -> play.py
    @IDE     : PyCharm
    @Author  : zihan
    @Date    : 2020/5/11 14:40
    @Desc    :
    ================================================="""
    from play1 import *
    
    
    if __name__ == '__main__':
        # 获取当前路径
        print("打印当前目录:", end='')
        print(os.getcwd())
    
        # 获取上层目录
        print("打印当前文件目录的上层目录:", end='')
        print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
    
        print("打印当前目录的上层目录:", end='')
        print(os.path.abspath(os.path.dirname(os.getcwd())))
    
        print("打印当前目录的上层目录(2):", end='')
        print(os.path.abspath(os.path.join(os.getcwd(), "..")))
    
        # 获取上上级目录
        print("打印当前目录的上上级目录:", end='')
        print(os.path.abspath(os.path.join(os.getcwd(), "../..")))
    
        # 获取当前文件的路径(__file__是当前执行的文件)
        print("打印当前文件路径:", end='')
        print(os.path.abspath(__file__))
    
        # 用play1.py里面的函数打印__file__的路径
        print("打印当前文件路径(1):", end='')
        print_file_path()
    
        # 打印主程序的路径
        print("打印主程序路径:", end='')
        print(os.path.abspath(sys.argv[0]))
    
        # 用play1.py里面的函数打印主程序路径
        print("打印主程序路径(1):", end='')
        print_main_path()
    
        # 打印主程序目录
        print("打印主程序目录:", end='')
        print(os.path.abspath(sys.path[0]))
    
        # 切换路径到根路径
        path = "F:/"
        os.chdir(path)
        print("切换后的路径:", end='')
        print(os.getcwd())

    运行结果:

    打印当前目录:F:gitplayOperate_system_ModeView_structure20200511路径问题总结
    打印当前文件目录的上层目录:F:gitplayOperate_system_ModeView_structure20200511
    打印当前目录的上层目录:F:gitplayOperate_system_ModeView_structure20200511
    打印当前目录的上层目录(2):F:gitplayOperate_system_ModeView_structure20200511
    打印当前目录的上上级目录:F:gitplayOperate_system_ModeView_structure
    打印当前文件路径:F:gitplayOperate_system_ModeView_structure20200511路径问题总结play.py
    打印当前文件路径(1):F:gitplayOperate_system_ModeView_structure20200511路径问题总结play1.py
    打印主程序路径:F:gitplayOperate_system_ModeView_structure20200511路径问题总结play.py
    打印主程序路径(1):F:gitplayOperate_system_ModeView_structure20200511路径问题总结play.py
    打印主程序目录:F:gitplayOperate_system_ModeView_structure20200511路径问题总结
    切换后的路径:F:

    这些就是关于一般路径的获取问题了。

  • 相关阅读:
    DOS之for循环用法说明
    Android 系统奔溃触发WatchDog分析
    『Android Q 源码分析』 Android 10.0 WatchDog源码解析
    android 命令:adb tcpip 5555 吊起"允许USB调试吗"
    Android 语言简码
    wps时间戳转换成日期
    Notepad++ 技巧:将某个字串批量替换为 换行符,或批量取消换行
    查询性能提升3倍!Apache Hudi 查询优化了解下?
    IE6 css fixed
    跟我一起学习ASP.NET 4.5 MVC4.0(四)
  • 原文地址:https://www.cnblogs.com/smart-zihan/p/12869627.html
Copyright © 2020-2023  润新知