2016-10-05 1 views
2

파이썬 기능이있는 폴더에 어떻게 액세스합니까?사용자 지정 파이썬 함수가있는 액세스 폴더

예를 들어 Nx2 배열의 데이터가 있다고 가정 해 보겠습니다. 첫 번째 열은 독립 변수이고 두 번째 열은 종속 변수입니다. 이 데이터를 원래 독립 변수에 포함 된 독립 변수의 다른 배열로 보간해야합니다. 이 절차는 다양한 범위의 독립 변수가있는 여러 다른 코드에서 사용되므로이 데이터 파일을 여러 위치에 복사하지 않으려합니다. 필자는이 기능을 포함하는 단일 데이터 복사본을 사용하여이 기능을 구현하는 단일 기능을 작성하려고합니다.

내 예 시도는 다음과 같습니다

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

경로'.'는 현재 작업 디렉토리 인 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__ 이름을 사용할 수 있습니다. 파이썬 3.4+에서는 절대 경로입니다. 이전 버전에서는 절대 경로인지 상대 경로인지 쉽게 알 수 없지만 일반적으로 신경 쓸 필요는 없습니다.

+0

my_dir = os.path.dirname (__ file__)을 별도의 .py 파일에 함수 안에 넣고 가져 오면 다음과 같은 내용의 오류 메시지가 나타납니다. IndentationError : unentent가 외부 들여 쓰기 레벨과 일치하지 않습니다 ... – astrapios

+0

신경 쓰지 마세요. . 어떻게 든 내 정력이 파일을 엉망으로 만들었 어. 고맙습니다!! – astrapios

관련 문제