在python HTML flask中显示CSV文件



我编写了一个python程序,它从web中抓取数据并将其保存为.csv文件。我想使用flask在HTML页面中显示。csv文件,但是在尝试了很多次之后,我的打开文件找不到。csv文件的位置。

我的项目结构是这样的:

├── main.py
├── scraping
│   ├── exports-imports.csv
├── website
│   ├── __init__.py
│   ├── templates
│   │   ├── datas.html
│   └── datas.py

main.py:

from website import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True, port=9000)

initpy:

from flask import Flask
def create_app():
app = Flask(__name__)
app.debug = True
from .datas import datas
app.register_blueprint(datas, url_prefix='/')
return app

datas.html:

<table>
<tr>
<thead>
<th>Year</th>
<th>Exports</th>
<th>Imports</th>
</thead>
</tr>
{% for row in data %}
<tr>
<td>{{ row[0] }}</td>
<td>{{ row[1] }}</td>
<td>{{ row[2] }}</td>
</tr>
{% endfor %}
</table>

* * * exports-imports.csv * * *:

1964;33193;30084
1965;36635;36019
1966;41224;37156
1967;44505;35884
1968;50900;41506
1969;58061;50092

datas.py:

from flask import Blueprint, render_template
import csv
datas = Blueprint('datas', __name__)

@datas.route('/datas')
def show_data():
try:
data = []
with open('../scraping/exports-imports.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
data.append(row)
return render_template('datas.html', data=data)
except FileNotFoundError:
return "Error: file not found"

我已经尝试改变export -imports.csv文件在我的项目周围的位置,但仍然烧瓶无法检测到它位于哪里,即使当我使用Ctrl +鼠标右键单击让我找到源CSV文件。我在网上搜索过,每个人都这么做,但这对我不起作用。我希望这里有人能帮我。如果可能的话,不要使用pandas和其他库。

下面的示例使用应用程序父目录的绝对路径作为基础,将相对路径规范添加到文件中。

from flask import Blueprint, current_app, render_template
import csv, os 
datas = Blueprint('datas', __name__)
@datas.route('/datas')
def show_data():
try:
data = []
path = os.path.join(
current_app.root_path, os.pardir, 
'scraping', 'exports-imports.csv'
)
with open(path, 'r') as f:
reader = csv.reader(f)
for row in reader:
data.append(row)
return render_template('datas.html', data=data)
except FileNotFoundError:
return "Error: file not found"

尝试使用绝对路径(而不是相对路径)来打开csv文件

from pathlib import Path
with open(Path(__file__).parent.absolute() / Path('../scraping/exports-imports.csv'), 'r') as f:
reader = csv.reader(f)

相关内容

  • 没有找到相关文章

最新更新