Файл не найден ошибка при использовании панд в Django - PullRequest
0 голосов
/ 30 мая 2018

Я написал наивный байесовский классификатор для текстовых сообщений, и его скрипт выглядит следующим образом:

tester.py

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

df = pd.read_table('a.txt', sep='\t', header=None, names=['label', 'text'])
...

На тестировании он работал правильно,Теперь я создал проект django, в котором этот скрипт и файл a.txt размещены рядом с views.py и urls.py.Когда пользователь вводит комментарий, он обрабатывается в файле представлений следующим образом:

views.py

from .tester import predictor    
def result(request):
        content = request.POST['content']
        res = predictor(content)
        status = ''
        if res == 0:
            status = 'not spam'    
        else:
            status = 'spam'    
        return render(request, 'spammer/result.html', {'status':status,})

Где предиктор - это функция, которую я добавил в tester.py:

def predictor(comment):
    tester = [comment]
    contest = count_vector.transform(tester) #count_vector=CountVectorizer()
    a = naive_bayes.predict(contest)  #naive_bayes=MultinomialNB()
    return a[0]

Однако при запуске сервера возникает ошибка:

  File "pandas/_libs/parsers.pyx", line 384, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas/_libs/parsers.pyx", line 695, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: File b'a.txt' does not exist

, что не так.Куда я иду не так?Я установил pandas, scipy, sklearn в виртуальной среде с использованием pip и tester.py, а также a.txt находятся в том же каталоге, что и views.py, urls.py

1 Ответ

0 голосов
/ 30 мая 2018

Поскольку ваша файловая система выглядит следующим образом:

yourproject
├── yourapp
│        ├── __init__.py
│        ├── settings.py
│        ├── urls.py
│        ├── views.py
│        └── a.txt
└── manage.py

И вы запускаете ее как

python manage.py runserver

Таким образом, ваш рабочий каталог yourproject/, а файл относительно расположен на yourapp/a.txt.

Что значит ваш рабочий каталог, то есть каталог, из которого вы запускаете команду python.Не текущее местоположение файла Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...