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:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結
打印當前文件路徑:F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play.py
打印當前文件路徑(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play1.py
打印主程序路徑:F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play.py
打印主程序路徑(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play.py
打印主程序目錄:F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結

 

 

要區分目錄和文件路徑:

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:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結
打印當前文件目錄的上層目錄:F:\gitplay\Operate_system_ModeView_structure\20200511
打印當前目錄的上層目錄:F:\gitplay\Operate_system_ModeView_structure\20200511
打印當前目錄的上層目錄(2):F:\gitplay\Operate_system_ModeView_structure\20200511
打印當前目錄的上上級目錄:F:\gitplay\Operate_system_ModeView_structure
打印當前文件路徑:F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play.py
打印當前文件路徑(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play1.py
打印主程序路徑:F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play.py
打印主程序路徑(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結\play.py
打印主程序目錄:F:\gitplay\Operate_system_ModeView_structure\20200511\路徑問題總結
切換后的路徑:F:\

 

這些就是關於一般路徑的獲取問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM