django: как читать файл .csv и управлять им из View.py

#python #django #pandas #csv

Вопрос:

Я пытаюсь работать с файлами csv, расположенными внутри приложения django. Я пытаюсь загрузить файл с помощью панд, например: pd.read_csv("...") безуспешно, я продолжаю получать сообщение об ошибке.

Вот как выглядит дерево каталогов:

 ├── __pycache__ │   ├── forms.cpython-36.pyc │   ├── models.cpython-36.pyc │   ├── views.cpython-36.pyc │   └── urls.cpython-36.pyc ├── apps.py ├── files │   ├── t1.csv │   ├── t2.csv │   ├── t3.csv │   ├── t4.csv │   └── parametre.csv ├── finished_apps.py ├── forms.py ├── migrations │   ├── 0001_initial.py │   ├── __init__.py │   └── __pycache__ │   ├── 0001_initial.cpython-36.pyc │   ├── 0002_remove_carriers_carriersheet.cpython-36.pyc │   ├── 0003_auto_20211021_1200.cpython-36.pyc │   ├── 0004_auto_20211021_1203.cpython-36.pyc │   └── __init__.cpython-36.pyc ├── models.py ├── views.py ├── templates │   ├── add_carrier.html │   ├── base.html │   ├── delete_carrier.html │   ├── delete_carrier_confirmation.html │   ├── _carrierdetails.html │   ├── _carrierlist.html │   ├── simulation.html │   └── update_carrier.html └── urls.py  

Я попробовал следующее внутри views.py

 df = pd.read_csv("/files/t1.csv") #not working df = pd.read_csv("./files/t1.csv") #not working df = pd.read_csv("t1.csv") #not working df = pd.read_csv("../files/t1.csv") #not working  

Я тоже пытался это сделать:

 from files import t1  

ошибки, которые я получаю, являются таковыми:

 No such file or directory (/file/t1.csv) #for example  
 cannot import name 't1'  

это тоже не работает.

Теперь мне интересно, можно ли импортировать файл таким образом, или я упускаю что-то очевидное здесь!

Комментарии:

1. Можете ли вы указать полученную ошибку?

2. df = pd.read_csv("carrier/files/t1.csv") если carrier это имя вашего приложения

3. к сожалению, это не делает трюк

Ответ №1:

Найдите путь к views.py из __file__ переменной и используйте ее, чтобы найти путь к вашему CSV:

 import os import pandas as pd  path = os.path.join(os.path.dirname(__file__), 'files/t1.csv') df = pd.read_csv(path)