在django中使用pandas时找不到文件错误

时间:2018-05-30 07:44:18

标签: python django pandas

我为短信写了一个天真的贝叶斯分类器,它的脚本如下:

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

情况并非如此。我哪里错了?我已经在pip中安装了pandas,scipy,sklearn,test.py以及a.txt与views.py,urls.py

位于同一目录中

1 个答案:

答案 0 :(得分:1)

因为您的文件系统如下:

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

你就像

一样运行它
python manage.py runserver

因此,您的工作目录为yourproject/,而您的文件位于yourapp/a.txt

重要的是你的工作目录,也就是运行python命令的目录。不是当前的Python文件位置。