本章節(jié)為“Python Flask顯示公司疫情情況”的四篇連載的第一篇,使用Pycharm社區(qū)版做開發(fā)環(huán)境埃篓。
一抵卫,在pycharm社區(qū)版中創(chuàng)建flask開發(fā)項目
1掠手,Pycharm的專業(yè)版集成了Web開發(fā)環(huán)境柳恐,但社區(qū)版也是一樣可以的伐脖,首先創(chuàng)建“flaskweb”python常規(guī)項目。然后在“setting”中點擊右側(cè)的“+”號乐设,添加所需要的庫(以添加flask為例:)
2讼庇,添加該項目需要的其他庫,見下圖:
3伤提,在“flaskweb”的項目結(jié)構(gòu)視圖下巫俺,創(chuàng)建data、sqlite肿男、excel介汹、json、static舶沛、templates文件夾嘹承。data用來存放excel、json等數(shù)據(jù)如庭,sqlite存放操作數(shù)據(jù)庫的py文件叹卷,excel和json文件夾用來存放操作Excel、JSON文件的py文件坪它,static存放flask網(wǎng)頁需要的js和css等靜態(tài)文件骤竹,templates存放flask的jinjia2模板頁面。
二往毡,在excel文件夾中創(chuàng)建用來解析Excel文件的read_data.py蒙揣。
Excel模板-百度云盤下載: 提取碼: y9j2
為了方便其他py文件使用該解析Excel的API,定義一個ExcelReader類:
import json
import os
import re
import xlrd
class ExcelReader(object):
def __init__(self, excel_name, sheet_name):
self.excel_name = excel_name
# 獲取當(dāng)前.py文件所在文件夾層
dir_path = os.path.dirname(os.path.realpath(__file__))
# 再次向上獲取工程的文件夾層
project_path = os.path.dirname(dir_path)
# 獲取excel所在文件目錄
self.excel_path = os.path.join(project_path, "data", excel_name)
# 打開指定的excel文件
self.data = xlrd.open_workbook(self.excel_path)
# 找到指定的sheet頁
self.table = self.data.sheet_by_name(sheet_name)
self.rows = self.table.nrows # 獲取總行數(shù)
self.cols = self.table.ncols # 獲取總列數(shù)
def data_dict(self):
if self.rows <= 1:
print("Excel無數(shù)據(jù)开瞭,路徑:", end='')
print(self.excel_path)
return False
else:
# 將列表的第一行設(shè)置為字典的key值
keys = self.table.row_values(0)
# 定義一個數(shù)組
data = []
# Excel表頭占了兩行懒震,所以從第3行開始讀取數(shù)據(jù),循環(huán)rows(總行數(shù))-1次
for i in range(2, self.rows):
# 循環(huán)內(nèi)定義一個字典嗤详,每次循環(huán)都會清空
dict = {}
# 從第一列開始讀取數(shù)據(jù)个扰,循環(huán)cols(總列數(shù))次
for j in range(0, self.cols):
# 將value值關(guān)聯(lián)同一列的key值
dict[keys[j]] = str(self.table.row_values(i)[j])
# 將關(guān)聯(lián)后的字典放到數(shù)組里
data.append(dict)
return data
def data_dict_to_json(self, data):
# 獲取生成json所在文件目錄
file_name = self.excel_path + '.json'
with open(file_name, 'w', encoding='utf-8') as file_object:
json.dump(data, file_object, ensure_ascii=False)
return file_object
def escap_no_common_char(self, s):
# s = '1123*#$ 中abc國'
str = re.sub('[a-zA-Z0-9’!"#$%&\'()*+,-./:;<=>?@,葱色。?★递宅、…【】《》?“”‘’苍狰![\\]^_`{|}~\s]+', "", s)
# 去除特殊字符恐锣,只保留漢子,字母舞痰、數(shù)字
# sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", "", str)
# 去除不可見字符
# str = re.sub(
# '[\001\002\003\004\005\006\007\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a]+',
# '', str)
print(str)
if __name__ == '__main__':
start = ExcelReader('Example.xlsx', 'Sheet1 (2)')
data = start.data_dict()
start.data_dict_to_json(data)
三土榴,如何調(diào)用excel文件夾下的py文件
1,在read_data.py文件中响牛,可以在該文件中執(zhí)行main方法:
if __name__ == '__main__':
start = ExcelReader('Example.xlsx', 'Sheet1 (2)')
data = start.data_dict()
start.data_dict_to_json(data)
2玷禽,如果要在read_data.py外也有多種方法可以調(diào)用API,但推薦使用類導(dǎo)入的方式呀打,即通過from ... import 導(dǎo)入python文件中定義的類矢赁。
from excel.read_data import ExcelReader
xls_reader = ExcelReader('soft2.18.xlsx','2月18日')
data = xls_reader.data_dict()
print(data)