from math import ceil
import csv
import codecs
@app.before_request
def load_csv():
g.path = 'C:\\12.csv'
@app.route('/read_csv/page/<int:page_num>')
def read_csv(page_num):
'''
目标url
http://127.0.0.1:5000/read_csv/page/1?limit=100
'''
# 若不指定limits默认为100
limits = request.args.get('limits')
if limits:
limits = int(limits)
else:
limits=100
# 根据limits和所在页数生成数据
def show_csv(reader,page=page_num,limits=limits):
df = []
for row in reader:
if page_num*limits >= reader.line_num > (page_num-1)*limits:
df.append(row)
return df
# 计算页面数
with open(g.path,'r+') as f:
row_length = len(f.readlines())
pages = int(ceil(row_length/limits))
"""
# 计算数据
with open(g.path,'r+') as f:
reader = csv.reader(f)
df = show_csv(reader,page_num,limits)
"""
# 计算数据
with open(g.path,'r+') as f:
reader = csv.reader(f)
df = show_csv(reader,page_num,limits)
return render_template('csv2.html',df=df,pages=pages,page_num=page_num,limits=limits)
<html>
<style type="text/css">
#customers
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:100%;
border-collapse:collapse;
}
#customers td, #customers th
{
font-size:1em;
border:1px solid #98bf21;
padding:3px 7px 2px 7px;
}
#customers th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#A7C942;
color:#ffffff;
}
#customers tr.alt td
{
color:#000000;
background-color:#EAF2D3;
}
</style>
<div>
<table id="customers">
<tr>
<th>用户标示</th>
<th>客户端版本</th>
<th>按钮ID</th>
<th>软件名</th>
<th>次数</th>
<th>命令字</th>
<th>32位或64位</th>
<th>计数值</th>
</tr>
{% for row in df %}
<!-- <li>{{row}}</li> -->
{% if loop.index % 2 != 0 %}
<tr>
{% else %}
<tr class="alt">
{% endif %}
{% for subrow in row %}
<td>{{subrow}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
<div>
<style type="text/css">
BODY {
FONT-SIZE: 12px;FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
WIDTH: 60%; PADDING-LEFT: 25px;
}
/*CSS green-black style pagination*/
DIV.green-black {
PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px;
MARGIN: 3px; PADDING-TOP: 3px; TEXT-ALIGN: center
}
DIV.green-black A {
BORDER-RIGHT: #2c2c2c 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #2c2c2c 1px solid;
PADDING-LEFT: 5px; BACKGROUND: url(images/pageimage1.gif) #2c2c2c;
PADDING-BOTTOM: 2px; BORDER-LEFT: #2c2c2c 1px solid; COLOR: #fff;
MARGIN-RIGHT: 2px; PADDING-TOP: 2px; BORDER-BOTTOM: #2c2c2c 1px solid; TEXT-DECORATION: none
}
DIV.green-black A:hover {
BORDER-RIGHT: #aad83e 1px solid; BORDER-TOP: #aad83e 1px solid;
BACKGROUND: url(images/pageimage2.gif) #aad83e; BORDER-LEFT: #aad83e 1px solid;
COLOR: #fff; BORDER-BOTTOM: #aad83e 1px solid
}
DIV.green-black A:active {
BORDER-RIGHT: #aad83e 1px solid; BORDER-TOP: #aad83e 1px solid;
BACKGROUND: url(images/pageimage2.gif) #aad83e; BORDER-LEFT: #aad83e 1px solid;
COLOR: #fff; BORDER-BOTTOM: #aad83e 1px solid
}
DIV.green-black SPAN.current {
BORDER-RIGHT: #aad83e 1px solid; PADDING-RIGHT: 5px;
BORDER-TOP: #aad83e 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold;
BACKGROUND: url(images/pageimage2.gif) #aad83e; PADDING-BOTTOM: 2px;
BORDER-LEFT: #aad83e 1px solid; COLOR: #fff; MARGIN-RIGHT: 2px;
PADDING-TOP: 2px; BORDER-BOTTOM: #aad83e 1px solid
}
DIV.green-black SPAN.disabled {
BORDER-RIGHT: #f3f3f3 1px solid; PADDING-RIGHT: 5px;
BORDER-TOP: #f3f3f3 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px;
BORDER-LEFT: #f3f3f3 1px solid; COLOR: #ccc; MARGIN-RIGHT: 2px;
PADDING-TOP: 2px; BORDER-BOTTOM: #f3f3f3 1px solid
}
</style>
<body>
<br>
<br>
<div class="green-black">
{% if page_num == 1 %}
<span class="disabled"> < Prev</span>
{% else %}
<a href='{{url_for('read_csv',page_num=page_num - 1,limits=limits)}}'> < Prev </a>
{% endif %}
{% for page in range(pages+1) %}
{% if page_num == page + 1 %}
<span class="current">
{{ loop.index }}
</span>
{% else %}
<a href='{{url_for('read_csv',page_num=page + 1, limits=limits)}}'>{{ loop.index }}</a>
{% endif %}
{% endfor %}
{% if page_num == pages + 1 %}
<span class="disabled">>Next ></span>
{% else %}
<a href='{{url_for('read_csv',page_num=page_num + 1,limits=limits)}}'> Next > </a>
{% endif %}
<style type="text/css">
h1 {color:red; font-size:14px;}
</style>
<h1 > xxxxxx</h1>
</div>
</body>
</html>