Je suis nouveau dans le domaine de python et de la programmation en général, donc c'est probablement une question stupide.
Je prépare actuellement une expérience de psychologie en utilisant PsychoPy v1.90.2 standalone, python 2.7, la version codeur, basée à la fois sur un script existant et sur un tutoriel d'un collègue. Il fonctionne parfaitement sur mon ordinateur (Mac) et sur un ordinateur Windows 10, mais sur un ordinateur utilisant Windows7, il ne sauvegarde pas la sortie (c'est-à-dire les réponses des participants) dans un fichier csv. Un fichier vide est créé, sans aucune spécification de fichier, mais avec le nom de fichier correct et à l'emplacement correct.
- Je peux importer correctement le fichier csv sous-jacent pour la création de stimulus.
- si j'inclus print df, je peux voir le cadre de données dans la console, donc les données existent quelque part, au moins temporairement.
- Mon système (Mac) est allemand, mais les ordinateurs Windows 10 et 7 sont réglés sur le français.
- Il n'y a aucun message d'erreur.
-
J'ai déjà fait cette expérience avec succès sur un Mac français (belge).
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)) outputdf = "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')
Ce que l'on devrait trouver à la fin : un fichier csv contenant toutes les informations contenues dans df initialement, plus la colonne "participant" contenant le numéro du participant et la colonne "ans" contenant les pressions de touches effectuées par le participant.
Ce que j'ai essayé :
- différentes versions de psychopy, sauf celle qui utilise python 3
- Je soupçonnais un problème d'encodage à cause des différentes dispositions de clavier, alors j'ai changé cela, mais aucun changement (et cela n'avait pas été un problème sur les ordinateurs belgo-français).
- Les solutions proposées ici : Changer l'encodage par défaut de Python ?
- Il n'y a pas de caractères spéciaux dans les noms de fichiers, et pas dans tous les fichiers csv lus, mais ils ne sont pas tous enregistrés.
- utilisé les privilèges d'administrateur sur l'ordinateur
Je sais qu'il y a une meilleure façon de sauvegarder les données que le pandas "pur" en utilisant l'experimentHandler, mais comme cela fonctionnait avant, et que mes connaissances jusqu'à présent sont limitées à la façon dont mon collègue travaille avec psychopy, j'ai gardé cette méthode. J'avais d'autres problèmes de compatibilité que j'ai réussi à résoudre, et j'ai bien peur qu'étant donné la pression temporelle dans laquelle je me trouve actuellement, ce soit une situation à fonds perdus...
EDIT : l'exemple de travail devrait maintenant fonctionner, désolé pour cela !