如何使Python的ast模块在flask中工作?
我有一个python脚本,它使用的是如何使Python的ast模块在flask中工作?,python,Python,我有一个python脚本,它使用的是ast.literal\u eval,运行良好 import csv import datetime import time import ast def checkDateTime(): fileName = "Bhuvneshwar Kumar-2018-05-10.csv" mydict = {} myList = [] start = datetime.datetime.strptime("2018-05-10 14:
ast.literal\u eval
,运行良好
import csv
import datetime
import time
import ast
def checkDateTime():
fileName = "Bhuvneshwar Kumar-2018-05-10.csv"
mydict = {}
myList = []
start = datetime.datetime.strptime("2018-05-10 14:41:38", '%Y-%m-%d %H:%M:%S')
period = 5
with open(fileName, 'rb') as csv_reader:
reader = csv.reader(csv_reader)
print "Reading"
for row in reader:
currDict = ast.literal_eval(row[0])
now = datetime.datetime.strptime(currDict["timeStamp"], '%Y-%m-%d %H:%M:%S')
if((now >= start) and (now - start <= datetime.timedelta(minutes = 100))):
myList.append(currDict)
print currDict["timeStamp"]
checkDateTime()
导入csv
导入日期时间
导入时间
导入ast
def checkDateTime():
fileName=“bhuvenshwar Kumar-2018-05-10.csv”
mydict={}
myList=[]
start=datetime.datetime.strtime(“2018-05-10 14:41:38”,“%Y-%m-%d%H:%m:%S”)
周期=5
打开(文件名为“rb”)作为csv_读取器:
读卡器=csv.reader(csv\U读卡器)
打印“阅读”
对于读取器中的行:
currDict=ast.literal\u eval(第[0]行)
现在=datetime.datetime.strtime(currDict[“timeStamp”],“%Y-%m-%d%H:%m:%S”)
如果((现在>=start)和(现在-start=start)和(现在-start)
应改为
for row in reader:
错误是读取行中的反斜杠n。如果将它们作为行读取,问题将得到解决。为了确保读取的内容是行而不仅仅是字符串,需要导入以在reader中迭代,而不是在文件对象:csv\U reader中迭代
完整的工作代码将是:
from __future__ import print_function
import sys
from flask import Flask, render_template, redirect, url_for, request
import os
import csv
import datetime
import time
from testDict import entityDict, date
import json
import ast
app = Flask(__name__)
app.secret_key = os.urandom(24)
@app.route("/")
def helloFromBubble():
return "Hi there!"
@app.route("/tweetsAllReq")
def stream():
fileName = "#DDvSRH-2018-05-10-Watson.csv"
csv_reader = csv.reader(FileTailer(open(fileName)))
def generate():
for row in csv_reader:
yield '{}\n'.format(json.dumps(row))
return app.response_class(generate(), mimetype='text/plain')
@app.route("/tweetsTimeFrame", methods = ["GET"])
def streamEntity():
tweetList = []
currDict = None
entity = request.args.get("entity")
startTime = request.args.get("startTime")
period = int(request.args.get("period"))
empty = []
if(period == None):
empty.append("period")
if(startTime == None):
empty.append("start")
if(entity == None):
empty.append(entity)
if(len(empty) > 0):
return "Status: Failure. Reason: Failed to load " + str(empty)
fileName = str(entity) + "-" + str(date) + ".csv"
start = datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S')
with open(fileName, 'rb') as csv_reader:
reader = csv.reader(csv_reader)
for row in reader:
currDict = ast.literal_eval(row[0])
now = datetime.datetime.strptime(currDict["timeStamp"], '%Y-%m-%d %H:%M:%S')
if((now >= start) and (now - start <= datetime.timedelta(minutes = period))):
tweetList.append(currDict)
return json.dumps(tweetList)
if(__name__ == "__main__"):
app.run(debug = True, port = 5000)
from\uuuuu future\uuuuu导入打印功能
导入系统
从flask导入flask,呈现模板,重定向,url,请求
导入操作系统
导入csv
导入日期时间
导入时间
从testDict导入entityDict,日期
导入json
导入ast
app=烧瓶(名称)
app.secret_key=os.uradom(24)
@附件路线(“/”)
def HellofRombuble():
返回“你好!”
@应用程序路径(“/tweetsAllReq”)
def stream():
fileName=“#DDvSRH-2018-05-10-Watson.csv”
csv_reader=csv.reader(FileTailer(打开(文件名)))
def generate():
对于csv_读取器中的行:
产生'{}\n'。格式(json.dumps(行))
返回app.response_类(generate(),mimetype='text/plain')
@app.route(“/tweetsimeframe”,methods=[“GET”])
def streamEntity():
tweetList=[]
currDict=无
实体=request.args.get(“实体”)
startTime=request.args.get(“startTime”)
period=int(request.args.get(“period”))
空=[]
如果(期间==无):
空。追加(“期间”)
如果(开始时间==无):
空。追加(“开始”)
如果(实体==无):
empty.append(实体)
如果(len(空)>0):
返回“状态:失败。原因:加载失败”+str(空)
fileName=str(实体)+“-”+str(日期)+“.csv”
start=datetime.datetime.strtime(开始时间,%Y-%m-%d%H:%m:%S)
打开(文件名为“rb”)作为csv_读取器:
读卡器=csv.reader(csv\U读卡器)
对于读取器中的行:
currDict=ast.literal\u eval(第[0]行)
现在=datetime.datetime.strtime(currDict[“timeStamp”],“%Y-%m-%d%H:%m:%S”)
如果((现在>=开始)和(现在-开始),则这是一个包含csv内容的csv文件!
for row in reader:
from __future__ import print_function
import sys
from flask import Flask, render_template, redirect, url_for, request
import os
import csv
import datetime
import time
from testDict import entityDict, date
import json
import ast
app = Flask(__name__)
app.secret_key = os.urandom(24)
@app.route("/")
def helloFromBubble():
return "Hi there!"
@app.route("/tweetsAllReq")
def stream():
fileName = "#DDvSRH-2018-05-10-Watson.csv"
csv_reader = csv.reader(FileTailer(open(fileName)))
def generate():
for row in csv_reader:
yield '{}\n'.format(json.dumps(row))
return app.response_class(generate(), mimetype='text/plain')
@app.route("/tweetsTimeFrame", methods = ["GET"])
def streamEntity():
tweetList = []
currDict = None
entity = request.args.get("entity")
startTime = request.args.get("startTime")
period = int(request.args.get("period"))
empty = []
if(period == None):
empty.append("period")
if(startTime == None):
empty.append("start")
if(entity == None):
empty.append(entity)
if(len(empty) > 0):
return "Status: Failure. Reason: Failed to load " + str(empty)
fileName = str(entity) + "-" + str(date) + ".csv"
start = datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S')
with open(fileName, 'rb') as csv_reader:
reader = csv.reader(csv_reader)
for row in reader:
currDict = ast.literal_eval(row[0])
now = datetime.datetime.strptime(currDict["timeStamp"], '%Y-%m-%d %H:%M:%S')
if((now >= start) and (now - start <= datetime.timedelta(minutes = period))):
tweetList.append(currDict)
return json.dumps(tweetList)
if(__name__ == "__main__"):
app.run(debug = True, port = 5000)