Jul*_*iaC 5 python csv python-2.7 pandas psychopy
我是 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')
最后应该是什么:一个包含 df 最初包含的所有信息的 csv 文件,加上包含参与者编号的“参与者”列和包含参与者执行的按键的“ans”列。
我试过的:
我知道有一种比使用 ExperimentHandler 保存数据的“纯”pandas 更好的方法,但是因为它以前有效,而且我到目前为止的知识仅限于我的同事使用 Psychopy 的方式,我保留了这种方法。我有其他兼容性问题,我设法解决了,而且鉴于我目前所处的时间压力,我担心这是一个成本沉没的情况......
编辑:工作示例现在应该可以工作了,抱歉!
当脚本终止时,csv 数据被写入(“刷新”)。该问题很可能是由于 Windows 7 中操作系统特定的原因而挂起。我以前见过这个问题,并通过两种不同的方式解决了它:
将其添加到脚本末尾:
w.close()
core.quit()
从此处的答案复制:将行替换df.to_csv为以下内容,其中文件对象在脚本终止之前显式关闭。
outfile = open(output_df, 'wb')
df.to_csv(outfile, index = False, header = True, sep = ',', encoding = 'utf-8')
outfile.close()
| 归档时间: | 
 | 
| 查看次数: | 4901 次 | 
| 最近记录: |