2017-10-31 4 views
0

모듈 수준의 전역 디렉토리와 동일한 디렉토리에있는 파일 (data.csv)에서 일부 데이터를로드하는 python 스크립트 (dataloader.py)가 있습니다. 모듈을 실행할 때 데이터 파일을 올바르게로드하지만 다른 디렉토리의 파일 (main.py)에서 모듈을 가져올 때 데이터 파일을 찾을 수 없습니다. 가져 오기 중 로컬 파일로드

내 파일 구조 : 가져 오기가 어디에서 호출 할 수있는 경우

main.py 
myModule/ 
    __init__.py 
    dataloader.py 
    data.csv 

어떻게 당신이 가져 오는 동안 로컬 파일에서 데이터를로드 할 수 있습니까?

답변

1

__file__은 항상 현재 파일을 반환합니다.

dataReader = csv.reader(os.path.dirname(__file__) + "/data.csv") 
+0

답변을 원하지만 작동하지 않습니다. 'dirname'은 경로'__file__'의 디렉토리 구성 요소를 리턴하지만'__file__'은 파일 이름이고 경로는 없습니다. 아마도'os.path.abspath (__ file__) + ... '을 의미했을 것입니다. 답변을 수정하십시오. 또한 OS에서 추출하기 위해 리터럴'/'대신'os.path.sep'를 사용할 수 있습니다. 패키지에서 리소스를 로딩하려면'pkgutil.get_data (package, resource)'도 참조하십시오. – progmatico

+0

나를 위해'__file__'은 파일 경로와 파일 자체를 포함합니다. 'os.path.dirname'은 내가 필요로하는 폴더의 절대 경로를 알려줍니다. 리터럴'/'을 사용하면 Windows와 POSIX에서 모두 작동합니다. – jebob

+0

당신이 옳습니다 (죄송합니다). 모듈을 가져온 경우에는 어떤 방식으로 요청 했습니까? 그러나 스크립트에서 직접 실행하면 스크립트의 파일 이름 만 있습니다 (실수로 이어짐). 그래서 항상 "항상 현재 파일을 반환합니다"하지만 항상 전체 경로는 아닙니다. '/'세부 사항을 알지 못했습니다. 좋은. – progmatico