питон;ошибка пути к файлу чтения - PullRequest
0 голосов
/ 27 августа 2018

У меня есть структура каталогов;

DIR1: ----outerPyFile.py ----DIR2: --------innerPyFile.py --------DIR3: ------------fileToRead.csv


Я читаю fileToRead.csv в innerPyFile : pd.read_csv('DIR3/fileToRead.csv') работаетхорошо, если я запускаю innerPyFile.py по отдельности

Теперь при импорте модуля innerPyFile внутри outerPyFile.py как
import innerPyFile
- FileNotFoundError: DIR3\\fileToRead.csv. не существует

я попытался заменить путь на абсолютный путь во innerPyFile как pd.read_csv(os.path.abspath('DIR3/fileToRead.csv'))

до сих пор, когда я запускаю externalPyFile, я получаю,
FileNotFoundError C:\\\DIR1\\\DIR3\\\fileToRead.csv не существует,

здесь в коде пропущен DIR2, поэтому я изменил код на pd.read_csv(os.path.abspath('DIR2/DIR3/fileToRead.csv'))

Теперь структура кода работает, когда я запускаю externalPyFile.py, что приемлемо.но здесь проблема возникает, когда я запускаю innerPyFile индивидуально, потому что он будет искать DIR2, которого нет в CWD of innerPyFile.

любой может подозревать это поведение,
пожалуйста, верните мне, что происходит?

К вашему сведению, я также попробовал модуль pathLib , который не решил проблему.

1 Ответ

0 голосов
/ 27 августа 2018

Попробуйте это:

innerPyFile.py

import os
script_path = os.path.abspath(__file__) # i.e. /path/to/dir/foobar.py
script_dir = os.path.split(script_path)[0] #i.e. /path/to/dir/
rel_path = "DIR3/fileToRead.csv"
abs_file_path = os.path.join(script_dir, rel_path)

pd.read_csv(abs_file_path)

outerPyFile.py

import DIR2.innerPyFile
#......do something.....
...