[問題] Import module to open file

看板Python作者 (Rebellionyu)時間8年前 (2017/02/09 11:03), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
最近遇到一個import問題,雖然可以解決, 但想知道比較普遍或python通常怎麼做。 資料夾結構如下: package |__main.py |__module |__output.py |__display.txt 在package資料夾裡有main.py及module資料夾, module資料夾裡有output.py, display.txt兩個檔案。 ============================ main.py內容為: from module.output import * printFile() ============================ output.py內容為: def printFile(): f = open('display.txt', 'r') print(f.read()) f.close() 若我直接執行python main.py會顯示找不到display.txt這個檔案。 雖然在開檔時可以直接利用os這個module來產生絕對路徑。 像是:path = os.path.join(os.path.abspath(__file__), 'display.txt') 但我總覺得這樣相當難看。 請問有比較好的作法嗎?或是就真的如上,必須產生絕對路徑讀檔。 謝謝各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.202.66 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1486609405.A.577.html

02/09 12:21, , 1F
你的方法應該就是最佳解吧
02/09 12:21, 1F

02/09 12:22, , 2F
包在內部沒差,外部使用的人不需要處理這些細節
02/09 12:22, 2F

02/09 12:24, , 3F
你找不到txt 是因為你的當前路徑並不是在這個檔案目錄
02/09 12:24, 3F

02/09 12:32, , 4F
好,謝謝各位的回答!
02/09 12:32, 4F

02/09 12:47, , 5F
_ROOT = os.path.dirname(os.path.abspath(__file__))
02/09 12:47, 5F

02/09 12:48, , 6F
def printFile(dir=_ROOT):
02/09 12:48, 6F

02/09 12:49, , 7F
with open(os.path.join(dir, "display.txt"), 'r') as f
02/09 12:49, 7F
文章代碼(AID): #1OczlzLt (Python)
文章代碼(AID): #1OczlzLt (Python)