首頁 > 後端開發 > Python教學 > 為什麼Python專案中的相對路徑會導致檔案未找到錯誤?

為什麼Python專案中的相對路徑會導致檔案未找到錯誤?

Barbara Streisand
發布: 2024-11-01 11:39:02
原創
593 人瀏覽過

Why Do Relative Paths in Python Projects Lead to File Not Found Errors?

在 Python 專案中使用相對路徑存取檔案

在 Python 專案中操作檔案時,為了方便起見,通常使用相對路徑。然而,它們的行為可能變得不明確,特別是在處理多層次專案結構時。

考慮以下項目佈局:

project
    /data
        test.csv
    /package
        __init__.py
        module.py
    main.py
登入後複製

模組module.py 嘗試讀取. ./data/test.csv 使用相對路徑,但是在運行main.py 時,出現錯誤,指示找不到該文件。這種明顯的不一致源於這樣一個事實:根據腳本的執行位置,相對路徑的解析方式不同。

對於 __init__.py 和 module.py,路徑是相對於包含這些的目錄進行評估的檔案。然而,對於 main.py 來說,路徑是相對於它自己的位置的。

解決路徑歧義

要解決這種歧義,可以使用絕對路徑。或者,更優雅的方法是利用 Python 的 __file__ 屬性:

<code class="python">from pathlib import Path

path = Path(__file__).parent / "../data/test.csv"

with path.open() as f:
    test = list(csv.reader(f))</code>
登入後複製

此技巧依賴 Python 3.4 pathlib 模組,並根據目前腳本的位置建構絕對路徑。

支援較舊的Python 版本

如果仍在使用低於3.4 的Python 版本,另一種方法涉及操作當前路徑:

<code class="python">import csv
import os.path

my_path = os.path.abspath(os.path.dirname(__file__))
path = os.path.join(my_path, "../data/test.csv")

with open(path) as f:
    test = list(csv.reader(f))</code>
登入後複製

此方法將os.path 函數結合到達到與基於pathlib 的方法相同的結果。

以上是為什麼Python專案中的相對路徑會導致檔案未找到錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板