2015-08-26 82 views
1

我想將我的試用開始時間打印到我的日誌文件中。但是,我需要在一段時間(定時器)循環內寫入日誌文件,這意味着我在該循環中執行的任何操作都將在每次刷新屏幕時完成。在psychopy中只寫出while循環中的第一個結果

問題是我只想將第一個clock.getTime()調用的結果寫入日誌文件。如果我這樣做:

while timer.getTime() >0: # while time isn't up (turns neg when time's up) 
    for key in event.getKeys(): 
     if key in ['escape']: 
      core.quit() # quit if they press escape 

     timeText.draw(window) 
     timeline.draw(window) 
     cursorImage.draw(window) 

     ## flip so it actually appears 
     window.flip() 
     OnsetTime = clock.getTime() 
     logfile.write('OnsetTime, %s' % OnsetTime) 

我得到了一堆我的日誌文件的行說'OnsetTime'和時間 - 每一個刷新一個。

我只想要打印第一張,但我不知道該怎麼做。

回答

3

這是做什麼CasualDemon的求婚的只是另一種方式,但一個我認爲是更優雅(三行代碼的記錄,而不是5):

def logOnsetTime(): 
    """Function which allows launching this code right after a window.flip()""" 
    logfile.write('OnsetTime, %s' % clock.getTime()) 

window.callOnFlip(logOnsetTime) # runs on first flip 
while timer.getTime() >0: # while time isn't up (turns neg when time's up) 
    for key in event.getKeys(): 
     if key in ['escape']: 
      core.quit() # quit if they press escape 

     timeText.draw(window) 
     timeline.draw(window) 
     cursorImage.draw(window) 

     ## flip so it actually appears. 
     window.flip() 

如果你想有一個日誌對於每個按鍵,將window.callOnFlip(logOnsetTime)放在while循環內。還有一種專門用於日誌記錄的window.logOnFlip方法,但它只是將輸入字符串保存到日誌中,並將其加蓋時間戳爲全局時鐘,因此它不會節省您的時間clock

+0

非常好的改進!我從來沒有使用過精神病,也沒有想到他們會爲此定製一些東西,非常整潔。 – CasualDemon

2

我想你想是這樣的:

while timer.getTime() >0: # while time isn't up (turns neg when time's up) 
    first = True 
    for key in event.getKeys(): 
     if key in ['escape']: 
      core.quit() # quit if they press escape 

     timeText.draw(window) 
     timeline.draw(window) 
     cursorImage.draw(window) 

     ## flip so it actually appears 
     window.flip() 
     OnsetTime = clock.getTime() 
     if first: 
      logfile.write('OnsetTime, %s' % OnsetTime) 
      first = False 

不過,如果你只想在最前面的一個,first = True將不得不While循環外面來代替。

相關問題