我一般是python和编程的新手,所以这可能是一个愚蠢的问题。
我目前正在基于现有脚本和同事的教程,使用PsychoPy v1.90.2独立版本python 2.7(编码器版本)进行心理学实验。它可以在我的计算机(Mac)和Windows 10计算机上完美运行,但是在使用Windows7的计算机上,它不会将输出(即参与者的响应)保存到csv文件中。将创建一个空文件,没有任何文件规范,但文件名正确且位置正确。
from psychopy import visual, core, event, gui, info, data
import pandas as pd
import numpy as np
import os
import random
import sys
import time
GUI = gui.Dlg(title = "example")
GUI.addField('participant:')
GUI.show()
if GUI.OK:
metadata = GUI.data
else:
sys.exit('participant cancelled')
w = visual.Window([1000, 600], color='black', units='pix')
df = pd.DataFrame([[1, 2], [5, 3], [4, 6]], columns=['stim_a', 'stim_b'])
df['participant'] = int(metadata[0])
df['ans'] = ''
df = df.iloc[random.sample(df.index, len(df))]
df.index = range(len(df))
output_df = "S_" + str(df.participant) + "_df" + "_" + time.strftime("%Y-%m:%d_%Hh%M") + ".csv"
for j in range(df.shape[0]):
event.clearEvents()
stim_a = visual.TextStim(w, df.stim_a[j])
stim_a.draw()
w.flip()
resp = event.waitKeys()
df.ans[j] = resp
print df
df.to_csv(output_df, index = False, header = True, sep = ',', encoding = 'utf-8')
最后应该是什么:一个csv文件,其中包含df最初包含的所有信息,以及包含参与者编号的“参与者”列和包含参与者执行的按键的“ ans”列。
我尝试过的事情:
我知道使用“ experimentHandler”比“纯”熊猫有一种更好的保存数据的方法,但是由于它以前工作过,所以到目前为止,我的知识仅限于我的同事对精神病的工作方式,因此我保留了该方法。我还有其他兼容性问题需要解决,但考虑到我目前所面临的时间压力,恐怕这是沉没的情况...
编辑:该工作示例现在应该可以正常工作,对此表示歉意!
答案 0 :(得分:0)
当脚本终止时,将写入csv数据(“刷新”)。该问题可能是由于Windows 7中特定于操作系统的原因而挂起的。我之前已经看到过此问题,并通过两种不同的方式解决了该问题:
将此添加到脚本末尾:
w.close()
core.quit()
从答案here复制:将df.to_csv
行替换为以下内容,其中在脚本终止之前显式关闭了文件对象。
outfile = open(path+'filename.csv', 'wb')
df.to_csv(output_df, index = False, header = True, sep = ',', encoding = 'utf-8')
outfile.close()