1
我有一个基本的Python代码,我试图比较一次到另一次(我不得不承认我有点新的python)。我使用Delorean将字符串转换为时元整数并将其与变量lastTime
进行比较。我的代码的其余部分工作,但只要我尝试添加新的函数,我的读数变为空白。我正在努力解决这个问题,因为Python不会抛出任何错误,它只是不给我任何东西。在Python中使用函数来比较时间戳(与Delorean)
下面是它的全部代码:
import random,sys,csv, delorean
from collections import defaultdict
from delorean import Delorean
from delorean import parse
size = ['small','medium','large']
color = ['blue','red','green']
body = ['fish','squid']
fishparts = defaultdict(set)
lastfish = defaultdict(str)
lastTime = 0
def tenMinInterval(ts, lt): # HAVING PROBLEMS HERE
global lastTime
curTime = Delorean(ts).epoch()
if curTime > lt+600000: # timestamp is a string and lastTime is an int
# return True
lastTime = curTime
return 'Upadted Time'
else:
# return False
return 'Not Upadted'
def complexityFish(ps,pf):
score = 1
if ps == 'medium':
score += 1
elif ps == 'large':
score += 2
if pf == 'squid':
score += 2
return str(score)
def diffPrev(a,la,b,lb,c,lc):
score = 0
if a != la:
score += 1
if b != lb:
score += 1
if c != lc:
score += 1
return str(score)
def diffUniq(player,x):
score = 0
for e in x:
if e not in fishparts[player]:
score += 1
fishparts[player].add(e)
return str(score)
def parseOneFish(p_player,p_fish):
player = p_player
fish = p_fish
if lastfish[player] != '':
ls,lc,lt = lastfish[player].split(' ')
else:
ls = lc = lt = ''
s,c,t = fish.split(' ')
lastfish[player] = fish
return((complexityFish(s,t),diffPrev(s,ls,c,lc,t,lt),diffUniq(player,[s,c,t])))
csvfilename = sys.argv[1]
csvdata = csv.DictReader(open(csvfilename,'rb'),delimiter=',')
x = False
for line in csvdata:
if not x:
print ','.join([k for k in line]),
print ',complexity,diffprev,diffuniq'
x = True
try:
cx,dp,du = parseOneFish(line['playerID'],line['fishType'])
tm = tenMinInterval(line['timestamp'], lastTime) # HAVING PROBLEMS HERE
print ','.join([line[k] for k in line]) + ',',
print ','.join([cx,dp,du])
print ','.join(tm)
except:
print ''
我与挣扎的部分是在功能tenMinInterval
并在底部在tm = tenMinInterval(line['timestamp'], lastTime)
我知道回报是没有做太多,但现在是不应该把它的其余部分改正?
这里是我的csv file as well
如果您需要'timestamp'和调整时间戳之间的差异,为什么不使用'excel'(或'googlesheets')来为您做计算?听起来很容易 – letsc 2015-03-08 22:18:51
我猜'tenMinInterval'引发了一些异常,然后执行exept子句中的'print''',用空行填充屏幕。用'raise'替换'print'''看看发生了什么。一般来说,列出要捕获的异常类型(例如'IOError'除外)是一个好主意,所以您不会意外捕获任何您没有预料到的异常。 – mkrieger1 2015-03-08 23:28:34
@letsc,因为我将在某些情况下拉动+10,000项目,并且这样做是不能接受的(并且手动拉下它并编辑,然后在python中操作它会增加一些步骤,这些步骤在python中应该很容易实现) 另外我想用它做更多的事情,一旦我找出差异 - 这只是让我到下一步 – Mike 2015-03-09 01:00:07