1

I'm very new to python and flask. I simply wanted to read a CSV file but it's giving me an error of "FileNotFoundError: [Errno 2] No such file or directory: 'Dog-Data.csv'" everytime I try to run run.py

Here are my file order

DD\
    static\
        (bunch of image files)
    templates\
        (bunch of template files)
    __init__.py
    views.py
    Dog-Data.csv

views.py

from flask import render_template
from app import app
import csv

@app.route('/')
@app.route('/Home')
def home():
    return render_template("Home.html",title='Home')

@app.route('/MakeaMatch')
def makeamatch():
    return render_template("MakeaMatch.html",title='Make a Match!')

@app.route('/Game')
def game():
    return render_template("Game.html",title='Game')

@app.route('/ListofDogs')
def listofdogs():
    return render_template("ListofDogs.html",title='List of Dogs')

@app.route('/About')
def about():
    return render_template("About.html", title='About')

@app.route('/Contact')
def contact():
    return render_template("Contact.html", title='Contact')

@app.route('/MatchResult')
def matchresult():
    class DogBreed:
        def __init__(self, br, per, si, lif, hou, cli):
            self.breed = br
            self.personality = per
            self.size = si
            self.lifestyle = lif
            self.housing = hou
            self.climate = cli
            self.match = 0

    #List that will contain class DogBreed
    ListOfBreeds = []

    data_file = open('Dog-Data.csv')
    csv_file = csv.reader(data_file)

    for row in csv_file:
        #print (row) #will print the csv file
        #print (row[2]) #will print element of that row
        dog_breed = DogBreed(row[0],row[1].lower().split(", "),row[2].lower(),row[3].lower(),row[4].lower(),row[5].lower())
        ListOfBreeds.append(dog_breed)

    data_file.close()

    #MORE CODES HERE. OMITTED BECAUSE I DON'T THINK IT'S RELEVANT

    return render_template("MatchResult.html",title='Match Result',posts=ListOfBreeds)

The webpage loads and templates shows up fine if I comment out the lines involving CSV. However, it doesn't of course show the result I want it too.

I've also tried putting the Dog-Data.csv into the static folder and used

data_file = open('static/Dog-Data.csv')

but this didn't work either.

Thanks so much for help.

0

2 Answers 2

1

Have you tried to give the full path instead of just a relative path?

Python sometimes takes the working directory as a "home" path, which might or might not be the same as your view.py is situated in.

Sign up to request clarification or add additional context in comments.

1 Comment

thank you. it was something really simple that i overlooked.
1

ok so really simple mistake that took hours for me to solve. I should be passing it from the root folder which means I should've put

data_file = open('app/Dog-Data.csv')

and now it works. T__T

1 Comment

This file path does not reflect the structure you posted about your app...I don't see app folder in that structure?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.