2016-10-05 47 views
2

如何訪問python函數所在的文件夾?自定義python函數所在的訪問文件夾

例如,讓我們說,我通過2陣列的數據具有A N。第一列是自變量,第二列是因變量。我需要用自變量的不同數組來插入這些數據,這些自變量的範圍包含在原始獨立變量中。此過程用於具有不同範圍的自變量的多個不同代碼,以便我不想將此數據文件複製到多個位置。我想編寫一個單獨的函數來實現這一點,在文件夾中包含函數本身的單個數據副本。

我的例子企圖是:

import numpy as np 
from scipy.interpolate import splev, splrep 

def function(some_array): 
    filepath = './file_path_in_the_function_folder.txt' 
    some_data = np.loadtxt(filepath) 

    interpolated_data = splev(some_array, splrep(some_data[:,0], some_data[:,1])) 

    return interpolated_data 

然而,「./」不識別功能的位置,而是引導到進口功能的腳本的當前工作目錄。我怎樣才能繞過這個問題?

+0

路徑'.'是reative到當前工作目錄,這是從中proecss開始,而不是路徑到當前的「PY」文件目錄。爲此使用變量'__file__'。 – zvone

回答

1

像這樣:

import os 

my_dir = os.path.dirname(__file__) 
fname = 'file_path_in_the_function_folder.txt' 
filepath = os.path.join(my_dir, fname) 

data model解釋,你可以獲取當前模塊的路徑使用__file__名。在python 3.4+中,這是一個絕對路徑,對於早期版本,您不能輕易知道它是絕對還是相對的 - 但您通常也不需要關心。

+0

把MY_DIR = os.path.dirname(__ FILE__)函數內部在一個單獨的.py文件並導入它給了我一個錯誤說:IndentationError:取消縮進不匹配任何外部縮進級別... – astrapios

+0

沒關係,它完美。不知何故,我的vim搞砸了這個文件。謝謝!! – astrapios

相關問題