【Python Path 完全指南】掌握 os.path 與 pathlib 模組的使用方法

目次

1. Python Path 的概要與重要性

Python 檔案路徑管理的基礎

在 Python 中,「路徑」是用來指定檔案或資料夾位置的路徑,在電腦的檔案系統中扮演著重要的角色。例如,在開啟特定目錄中的檔案或在程式中操作檔案時,如果路徑設定錯誤,就會發生錯誤。因此,理解如何處理路徑是 Python 程式設計的基本技能之一。

Python 提供了多種模組來處理檔案路徑,其中最具代表性的是 os.path 模組與 pathlib 模組。正確使用這些模組可以提高檔案操作的效率,並確保程式在不同的作業系統之間保持良好的相容性。

絕對路徑與相對路徑

路徑主要分為「絕對路徑」與「相對路徑」。

  • 絕對路徑:指的是從系統的根目錄開始的完整路徑,無論從哪個目錄存取,都可以準確定位到目標檔案或資料夾。例如,在 Windows 上,路徑格式為 C:\Users\YourName\Documents\file.txt
  • 相對路徑:指的是相對於當前工作目錄(當前目錄)的路徑。例如,若當前目錄為 C:\Users\YourName,則可以使用相對路徑 Documents\file.txt 來存取相同的檔案。

Python 中管理路徑的重要性

在 Python 程式設計中,準確管理檔案路徑並處理不同作業系統的差異至關重要。例如,在 Windows 中,路徑的分隔符號是「\」,而在 Linux 和 macOS 中則是「/」。使用 os.pathpathlib 模組,可以讓程式自動適應不同的作業系統,減少錯誤並提升跨平台的相容性。

侍エンジニア塾

2. 基本的 Path 操作:os.path 模組

什麼是 os.path 模組?

os.path 模組是 Python 標準函式庫的一部分,提供了各種操作檔案與目錄路徑的實用功能。該模組允許確認檔案是否存在、合併路徑、擷取檔名等,簡化日常的路徑管理。此外,它能自動適應不同作業系統(Windows、Linux、macOS)的路徑格式,支援跨平台開發。

主要函式

os.path.exists():確認檔案或目錄是否存在

os.path.exists() 用於檢查指定的路徑是否存在。若路徑存在,回傳 True,否則回傳 False。例如:

import os

path = "/path/to/file.txt"

if os.path.exists(path):
    print("檔案存在。")
else:
    print("檔案不存在。")

os.path.join():合併路徑

os.path.join() 用於正確合併多個路徑,確保不同作業系統的路徑格式正確。例如:

import os

dir_path = "/path/to/directory"
file_name = "file.txt"

full_path = os.path.join(dir_path, file_name)
print(full_path)  # /path/to/directory/file.txt
年収訴求

3. 進階的 Path 操作:pathlib 模組

什麼是 pathlib 模組?

pathlib 模組自 Python 3.4 起引入,提供了一種面向物件的方式來管理檔案系統的路徑。與傳統的 os.path 模組相比,pathlib 使路徑操作更加直觀,並提升可讀性與維護性。

pathlib 的基本用法

建立與合併路徑

使用 Path 類別來建立路徑:

from pathlib import Path

path = Path("/user/local/example.txt")
print(path)

合併路徑時,可使用 / 運算子,這比 os.path.join() 更簡潔:

from pathlib import Path

base_dir = Path("/user/local")
file_name = "example.txt"
full_path = base_dir / file_name
print(full_path)  # /user/local/example.txt
年収訴求

4. 環境變數 PYTHONPATH 的應用

什麼是 PYTHONPATH?

PYTHONPATH 是 Python 用來搜尋模組與套件的環境變數。通常,Python 會根據 sys.path 來尋找標準函式庫與已安裝的套件。但如果設定了 PYTHONPATH,Python 會優先搜尋該變數內指定的目錄。這個功能特別適用於不同專案間使用不同版本的模組,或是載入自訂的模組。

如何設定 PYTHONPATH

透過終端機設定

可以使用終端機來暫時設定 PYTHONPATH,並立即生效:

  • Windows: 進入「系統環境變數」設定,新增 PYTHONPATH,並填入所需的目錄路徑。

這樣每次開啟終端機時,設定都會自動載入。

5. os.path 與 pathlib 的使用時機

os.path 與 pathlib 的比較

Python 提供了 os.pathpathlib 這兩個主要的路徑操作模組。它們各有優勢,應根據需求來選擇。

特性os.pathpathlib
數據類型字串Path 物件
適用 Python 版本Python 2.x / 3.xPython 3.4 以上
操作方式函數式物件導向
路徑合併os.path.join()/ 運算子
適用場景簡單腳本、相容舊專案新專案、可讀性高

6. 常見問題 (FAQ)

1. 如何取得目前的工作目錄?

可以使用 ospathlib 取得當前的工作目錄:

import os
print(os.getcwd())
from pathlib import Path
print(Path.cwd())

2. 如何檢查並建立目錄?

import os
dir_path = "/path/to/directory"
if not os.path.exists(dir_path):
    os.makedirs(dir_path)
from pathlib import Path
dir_path = Path("/path/to/directory")
dir_path.mkdir(parents=True, exist_ok=True)

3. 絕對路徑與相對路徑的區別?

  • 絕對路徑:從根目錄開始的完整路徑,例如 /home/user/file.txt
  • 相對路徑:相對於當前目錄,例如 ./file.txt

4. os.path 和 pathlib 可以混用嗎?

可以混用,但建議在同一個專案內保持一致,較推薦 pathlib,因為它更直觀且支援物件導向。

5. 為何不應使用 + 來連接路徑?

因為不同作業系統的路徑分隔符號不同(Windows:\,Linux/macOS:/)。應使用 os.path.join()pathlib/ 運算子。

  • Linux/macOS: 編輯 .bashrc.zshrc,加入以下內容:
export PYTHONPATH=/path/to/directory:$PYTHONPATH
  • Windows: 進入「系統環境變數」設定,新增 PYTHONPATH,並填入所需的目錄路徑。

這樣每次開啟終端機時,設定都會自動載入。

年収訴求

5. os.path 與 pathlib 的使用時機

os.path 與 pathlib 的比較

Python 提供了 os.pathpathlib 這兩個主要的路徑操作模組。它們各有優勢,應根據需求來選擇。

特性os.pathpathlib
數據類型字串Path 物件
適用 Python 版本Python 2.x / 3.xPython 3.4 以上
操作方式函數式物件導向
路徑合併os.path.join()/ 運算子
適用場景簡單腳本、相容舊專案新專案、可讀性高
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

6. 常見問題 (FAQ)

1. 如何取得目前的工作目錄?

可以使用 ospathlib 取得當前的工作目錄:

import os
print(os.getcwd())
from pathlib import Path
print(Path.cwd())

2. 如何檢查並建立目錄?

import os
dir_path = "/path/to/directory"
if not os.path.exists(dir_path):
    os.makedirs(dir_path)
from pathlib import Path
dir_path = Path("/path/to/directory")
dir_path.mkdir(parents=True, exist_ok=True)

3. 絕對路徑與相對路徑的區別?

  • 絕對路徑:從根目錄開始的完整路徑,例如 /home/user/file.txt
  • 相對路徑:相對於當前目錄,例如 ./file.txt

4. os.path 和 pathlib 可以混用嗎?

可以混用,但建議在同一個專案內保持一致,較推薦 pathlib,因為它更直觀且支援物件導向。

5. 為何不應使用 + 來連接路徑?

因為不同作業系統的路徑分隔符號不同(Windows:\,Linux/macOS:/)。應使用 os.path.join()pathlib/ 運算子。

  • Windows:
set PYTHONPATH=C:\path\to\directory;%PYTHONPATH%
python script.py

這種方法僅在當前終端機有效,關閉終端機後設定將會消失。

設定永久的 PYTHONPATH

如果希望 PYTHONPATH 設定永久有效,可修改系統的環境變數。

  • Linux/macOS: 編輯 .bashrc.zshrc,加入以下內容:
export PYTHONPATH=/path/to/directory:$PYTHONPATH
  • Windows: 進入「系統環境變數」設定,新增 PYTHONPATH,並填入所需的目錄路徑。

這樣每次開啟終端機時,設定都會自動載入。

5. os.path 與 pathlib 的使用時機

os.path 與 pathlib 的比較

Python 提供了 os.pathpathlib 這兩個主要的路徑操作模組。它們各有優勢,應根據需求來選擇。

特性os.pathpathlib
數據類型字串Path 物件
適用 Python 版本Python 2.x / 3.xPython 3.4 以上
操作方式函數式物件導向
路徑合併os.path.join()/ 運算子
適用場景簡單腳本、相容舊專案新專案、可讀性高

6. 常見問題 (FAQ)

1. 如何取得目前的工作目錄?

可以使用 ospathlib 取得當前的工作目錄:

import os
print(os.getcwd())
from pathlib import Path
print(Path.cwd())

2. 如何檢查並建立目錄?

import os
dir_path = "/path/to/directory"
if not os.path.exists(dir_path):
    os.makedirs(dir_path)
from pathlib import Path
dir_path = Path("/path/to/directory")
dir_path.mkdir(parents=True, exist_ok=True)

3. 絕對路徑與相對路徑的區別?

  • 絕對路徑:從根目錄開始的完整路徑,例如 /home/user/file.txt
  • 相對路徑:相對於當前目錄,例如 ./file.txt

4. os.path 和 pathlib 可以混用嗎?

可以混用,但建議在同一個專案內保持一致,較推薦 pathlib,因為它更直觀且支援物件導向。

5. 為何不應使用 + 來連接路徑?

因為不同作業系統的路徑分隔符號不同(Windows:\,Linux/macOS:/)。應使用 os.path.join()pathlib/ 運算子。

  • Linux/macOS:
export PYTHONPATH=/path/to/directory:$PYTHONPATH
python script.py
  • Windows:
set PYTHONPATH=C:\path\to\directory;%PYTHONPATH%
python script.py

這種方法僅在當前終端機有效,關閉終端機後設定將會消失。

設定永久的 PYTHONPATH

如果希望 PYTHONPATH 設定永久有效,可修改系統的環境變數。

  • Linux/macOS: 編輯 .bashrc.zshrc,加入以下內容:
export PYTHONPATH=/path/to/directory:$PYTHONPATH
  • Windows: 進入「系統環境變數」設定,新增 PYTHONPATH,並填入所需的目錄路徑。

這樣每次開啟終端機時,設定都會自動載入。

5. os.path 與 pathlib 的使用時機

os.path 與 pathlib 的比較

Python 提供了 os.pathpathlib 這兩個主要的路徑操作模組。它們各有優勢,應根據需求來選擇。

特性os.pathpathlib
數據類型字串Path 物件
適用 Python 版本Python 2.x / 3.xPython 3.4 以上
操作方式函數式物件導向
路徑合併os.path.join()/ 運算子
適用場景簡單腳本、相容舊專案新專案、可讀性高

6. 常見問題 (FAQ)

1. 如何取得目前的工作目錄?

可以使用 ospathlib 取得當前的工作目錄:

import os
print(os.getcwd())
from pathlib import Path
print(Path.cwd())

2. 如何檢查並建立目錄?

import os
dir_path = "/path/to/directory"
if not os.path.exists(dir_path):
    os.makedirs(dir_path)
from pathlib import Path
dir_path = Path("/path/to/directory")
dir_path.mkdir(parents=True, exist_ok=True)

3. 絕對路徑與相對路徑的區別?

  • 絕對路徑:從根目錄開始的完整路徑,例如 /home/user/file.txt
  • 相對路徑:相對於當前目錄,例如 ./file.txt

4. os.path 和 pathlib 可以混用嗎?

可以混用,但建議在同一個專案內保持一致,較推薦 pathlib,因為它更直觀且支援物件導向。

5. 為何不應使用 + 來連接路徑?

因為不同作業系統的路徑分隔符號不同(Windows:\,Linux/macOS:/)。應使用 os.path.join()pathlib/ 運算子。

広告
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール