2017-06-02 39 views
0

讓我們一起來看看我的Python包從Python包中引用文件和函數。

packman 
weights.py 
    functions: 
    weigh() 
    force() 
relatives.py 
    functions: 
    roll() 
    torque() 
__init__.py 
data 
    work.txt 
    rastor.txt 

目錄結構,現在我有兩個問題。

首先假設我想訪問work.txt,從weights.py中的函數weigh()中,我將如何解決它? 我最初與此

f = open("data/work.txt") 

試圖在當代碼裏面主要運行這種方法併成功地工作。然而,它未能找到該文件時,它被用作一個包,它提出的問題

FileNotFoundError: [Errno 2] No such file or directory: 'data/work.txt'

我應該怎麼寫work.txt的地址,使之更具有普遍性?

我的另一個問題是,當我想從relatives.py中的函數roll()調用weights.py的函數weigh()時,我該怎麼做?

回答

0

我通常對我的應用程序有一個main.py或類似的單一入口點。然後,我可以做這樣的事情來獲取路徑爲我的應用:

import os 

app_location = os.path.dirname(os.path.abspath(__file__)) 

現在,你可以通過這個位置到其他模塊或者甚至使用相同的想法在他們得到他們的位置。既然你現在這個位置,你可以很容易地做這樣的事情:

data_location = os.path.join(app_location, 'data', 'work.txt') 
with open(data_location) as f: 
    # do something with the file object 
    for line in f: 
     print(line) 

關於你的第二個問題,只需要導入weights到您的relatives.py腳本,並呼籲weights.weigh()

相關問題