簡體   English   中英

Python os模塊在當前目錄上打開文件,具有相對路徑

[英]Python os module open file above current directory with relative path

OS模塊的文檔似乎沒有關於如何在沒有完整路徑的情況下打開不在子目錄中的文件或腳本運行的當前目錄的信息。 我的目錄結構如下所示。

/home/matt/project/dir1/cgi-bin/script.py
/home/matt/project/fileIwantToOpen.txt

open("../../fileIwantToOpen.txt","r")

提供文件未找到錯誤。 但是如果我在cgi-bin目錄中啟動一個python解釋器並嘗試open("../../fileIwantToOpen.txt","r")它可以工作。 出於明顯的可移植性原因,我不想在完整路徑中進行硬編碼。 有一組的OS模塊的方法可以做到這一點?

open的路徑應該相對於當前工作目錄,即運行腳本的目錄。 所以上面的例子只有從cgi-bin目錄運行它才有效。

一個簡單的解決方案是使您的路徑相對於腳本。 一種可能的解決方

from os import path

basepath = path.dirname(__file__)
filepath = path.abspath(path.join(basepath, "..", "..", "fileIwantToOpen.txt"))
f = open(filepath, "r")

這樣,您將獲得正在運行的腳本的路徑(basepath),並將其與要打開的文件的相對路徑連接起來。 os.path將負責加入這兩條路徑的細節。

這應該會將您移動到腳本所在的目錄中,如果您還沒有:

file_path = os.path.dirname(__file__)
if file_path != "":
    os.chdir(file_path)
open("../../fileIwantToOpen.txt","r")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM