питон; ошибка пути к файлу чтения

1

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

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
- DIR3\\fileToRead.csv.: 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 innerPyFile.

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

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

Теги:
path
os.path
pathlib
absolute-path

1 ответ

1
Лучший ответ

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

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.....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню