一文講清Python中文件路徑的基本概念與操作方法
一、文件路徑概述
1. 什么是文件路徑
文件路徑是用于定位文件或文件夾在計算機中存儲位置的“地址”,就像現(xiàn)實生活中的“家庭住址”一樣,通過它操作系統(tǒng)才能找到對應的文件。
2. 為什么要學習文件路徑
在 Python 中,無論是讀取文件(如 open('data.txt'))、保存數(shù)據(jù),還是導入自定義模塊,都需要通過文件路徑來定位目標。路徑寫錯會直接導致 FileNotFoundError(文件找不到錯誤),因此掌握路徑是 Python 編程的基礎技能。
二、路徑的分類:絕對路徑 vs 相對路徑
1. 絕對路徑
定義:從文件系統(tǒng)的“根目錄”開始,完整描述文件位置的路徑。無論當前在哪個目錄下,絕對路徑都能唯一確定文件位置。
不同系統(tǒng)的絕對路徑格式:
Windows 系統(tǒng):以盤符開頭(如 C:、D:),用反斜杠 \ 分隔目錄(Python 中也可以用正斜杠 / 避免轉(zhuǎn)義問題)。
示例:C:\Users\張三\Desktop\project\data.txt 或 C:/Users/張三/Desktop/project/data.txt
Linux / macOS 系統(tǒng):以正斜杠 /(根目錄)開頭,用正斜杠 / 分隔目錄。
示例:/Users/張三/Desktop/project/data.txt
2. 相對路徑
定義:相對于當前工作目錄(Current Working Directory, CWD)的路徑。簡單說,就是“以當前位置為起點,去找目標文件”。
相對路徑的核心符號:
| 符號 | 含義 | 說明 |
| . | 當前目錄 | 可省略(如 ./data.txt 等價于 data.txt) |
| .. | 上一級目錄 | 表示回到當前目錄的父目錄 |
| / | 路徑分隔符 | Windows 用 \ 或 /,Linux/macOS 用 / |
常見相對路徑寫法示例:
假設當前工作目錄是 project,目錄結(jié)構(gòu)如下:
C:\Users\張三\Desktop\
└── project/ # 當前工作目錄(CWD)
├── code/
│ └── script.py
├── data.txt # 目標文件1
└── docs/
└── note.txt # 目標文件2
└── photo.jpg # 目標文件3(上上級目錄)
| 場景 | 相對路徑寫法 | 說明 |
| 引用當前目錄的 data.txt | data.txt 或 ./data.txt | 直接寫文件名(或加 ./) |
| 引用 code 目錄下的 script.py | code/script.py | 進入子目錄 code,再找文件 |
| 引用上一級目錄的 photo.jpg | ../photo.jpg | 先回到 Desktop(上一級),再找文件 |
| 引用上上級目錄(假設CWD是 code) | ../../photo.jpg | 從 code → project → Desktop,再找文件 |
如下示例,data與01腳本文件(文件名盡量不要數(shù)字開頭)同級別,在01腳本文件中引用同級data中的1.txt方式如下:

三、Python 中處理文件路徑的常用方法
使用Pycharm軟件進行路徑查看:
右擊文件點擊CopyPath

點擊后可查看文件的絕對路徑和 項目根相對路徑(相對于項目文件夾)

Python 提供了兩種主流方式處理路徑:傳統(tǒng)的 os.path 模塊和現(xiàn)代的 pathlib 模塊(推薦新手優(yōu)先學 pathlib,更簡潔直觀)。
1. 方法一:os.path模塊(傳統(tǒng)方法)
os 是 Python 內(nèi)置的系統(tǒng)交互模塊,os.path 專門用于處理路徑。
常用函數(shù):
| 函數(shù) | 功能說明 | 示例 |
| os.getcwd() | 獲取當前工作目錄的絕對路徑 | print(os.getcwd()) → C:\project |
| os.path.join() | 智能拼接路徑(自動適配系統(tǒng)分隔符) | os.path.join('code', 'script.py') → code/script.py |
| os.path.abspath() | 將相對路徑轉(zhuǎn)換為絕對路徑 | os.path.abspath('data.txt') → C:\project\data.txt |
| os.path.exists() | 判斷路徑是否存在(文件或文件夾都可) | os.path.exists('data.txt') → True/False |
| os.path.isfile() | 判斷是否為文件 | os.path.isfile('data.txt') → True |
| os.path.isdir() | 判斷是否為文件夾 | os.path.isdir('code') → True |
代碼示例(帶詳細注釋):
import os # 導入 os 模塊
# 1. 獲取當前工作目錄
current_dir = os.getcwd()
print("當前工作目錄:", current_dir) # 輸出類似: C:\Users\張三\Desktop\project
# 2. 拼接路徑(推薦用這個,避免手動寫分隔符出錯)
# 比如要拼接 "code" 和 "script.py"
script_path = os.path.join(current_dir, "code", "script.py")
print("拼接后的路徑:", script_path) # 輸出: C:\Users\張三\Desktop\project\code\script.py
# 3. 判斷文件是否存在
if os.path.exists(script_path):
print("文件存在!")
else:
print("文件不存在!")2. 方法二:pathlib模塊(現(xiàn)代推薦,面向?qū)ο螅蓪W完面向?qū)ο蠛笤龠M行回顧)
pathlib 是 Python 3.4+ 新增的模塊,用面向?qū)ο?/strong>的方式處理路徑,代碼更優(yōu)雅,是目前官方推薦的方式。
核心類:Path
| 方法/屬性 | 功能說明 | 示例 |
| Path.cwd() | 獲取當前工作目錄(等價于 os.getcwd()) | Path.cwd() → C:\project |
| Path.joinpath() | 拼接路徑(也可以用 / 運算符) | Path('code') / 'script.py' → code/script.py |
| Path.resolve() | 轉(zhuǎn)換為絕對路徑(等價于 os.path.abspath()) | Path('data.txt').resolve() → C:\project\data.txt |
| Path.exists() | 判斷路徑是否存在 | Path('data.txt').exists() → True |
| Path.is_file() | 判斷是否為文件 | Path('data.txt').is_file() → True |
| Path.is_dir() | 判斷是否為文件夾 | Path('code').is_dir() → True |
| Path.parent | 獲取上一級目錄(等價于 ..) | Path('code/script.py').parent → code |
代碼示例(帶詳細注釋):
from pathlib import Path # 從 pathlib 導入 Path 類
# 1. 獲取當前工作目錄
current_dir = Path.cwd()
print("當前工作目錄:", current_dir) # 輸出類似: C:\Users\張三\Desktop\project
# 2. 拼接路徑(推薦用 / 運算符,超簡潔!)
# 方式一:用 joinpath()
script_path = current_dir.joinpath("code", "script.py")
# 方式二:用 / (更推薦,像寫路徑一樣自然)
script_path = current_dir / "code" / "script.py"
print("拼接后的路徑:", script_path) # 輸出: C:\Users\張三\Desktop\project\code\script.py
# 3. 判斷文件是否存在
if script_path.exists():
print("文件存在!")
else:
print("文件不存在!")
# 4. 獲取上一級目錄
parent_dir = current_dir.parent # 等價于 ../
print("上一級目錄:", parent_dir) # 輸出: C:\Users\張三\Desktop四、新手常見問題與注意事項
1. 路徑分隔符的“坑”
Windows 默認用反斜杠 \,但在 Python 字符串中 \ 是轉(zhuǎn)義字符(比如 \n 是換行),直接寫會報錯!
錯誤寫法:open("C:\Users\data.txt")(\U 會被當成轉(zhuǎn)義符)
正確寫法:
- 用正斜杠
/:open("C:/Users/data.txt")(推薦,跨系統(tǒng)兼容) - 用雙反斜杠
\\:open("C:\\Users\\data.txt") - 用原始字符串
r"":open(r"C:\Users\data.txt")(加r表示不轉(zhuǎn)義)
2. 相對路徑的“基準”:當前工作目錄(CWD)
相對路徑是相對于“當前工作目錄”,而不是“腳本所在目錄”!
比如你在 Desktop 目錄下運行 project/code/script.py,此時 CWD 是 Desktop,不是 code。
如何獲取“腳本所在目錄”的絕對路徑?
如果希望路徑相對于腳本本身(無論在哪里運行都能找到文件),可以用以下方法:
1.用 pathlib(推薦):
from pathlib import Path
# 獲取當前腳本的絕對路徑,再取父目錄(即腳本所在文件夾)
script_dir = Path(__file__).resolve().parent
print("腳本所在目錄:", script_dir)(注:__file__ 是 Python 內(nèi)置變量,表示當前腳本的文件名)
2.用 os.path:
import os
script_dir = os.path.dirname(os.path.abspath(__file__))
print("腳本所在目錄:", script_dir)3. 文件名和路徑中不要有中文?
不是不能有,但建議新手盡量用英文命名文件和文件夾,避免部分系統(tǒng)或舊版本 Python 出現(xiàn)編碼問題。
五、總結(jié)
- 絕對路徑:完整地址,從根目錄開始,適合固定位置的文件;
- 相對路徑:以當前目錄為起點,用
.(當前)、..(上一級),適合項目內(nèi)文件; - Python 處理路徑:優(yōu)先用
pathlib(面向?qū)ο?,簡潔),也可以?os.path(傳統(tǒng)); - 避坑要點:注意分隔符轉(zhuǎn)義、明確當前工作目錄、盡量用英文命名。
到此這篇關于一文講清Python中文件路徑的基本概念與操作方法的文章就介紹到這了,更多相關Python文件路徑操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一文了解Python并發(fā)編程的工程實現(xiàn)方法
這篇文章主要介紹了Python并發(fā)編程的工程實現(xiàn),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05
python dataframe astype 字段類型轉(zhuǎn)換方法
下面小編就為大家分享一篇python dataframe astype 字段類型轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python hashlib庫數(shù)據(jù)安全加密必備指南
這篇文章主要為大家介紹了Python hashlib庫數(shù)據(jù)安全加密的使用實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
django-利用session機制實現(xiàn)唯一登錄的例子
這篇文章主要介紹了django-利用session機制實現(xiàn)唯一登錄的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
在Python中使用SQLite數(shù)據(jù)庫進行增刪改查操作的代碼示例
SQLite 是 Python 內(nèi)置支持的輕量級嵌入式數(shù)據(jù)庫,無需安裝額外服務端,僅通過文件(或內(nèi)存)存儲數(shù)據(jù),非常適合小型項目、測試場景或本地數(shù)據(jù)管理,以下是完整的增刪改查(CRUD)操作教程,包含核心語法、示例代碼和最佳實踐,需要的朋友可以參考下2025-11-11
Python自定義類的數(shù)組排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了Python自定義類的數(shù)組排序?qū)崿F(xiàn)代碼,需要的朋友可以參考下2016-08-08

