2015-08-10 5 views
1

Я немного новичок в кодировании PsychoPy и Python, поэтому, пожалуйста, извините мой вопрос, если он является основным. В моей задаче у меня есть несколько файлов, которые определяют положение стимулов. Мой внешний цикл имеет переменную, ExcelList, в которой указаны упомянутые выше имена файлов. Внутренний цикл, который диктует каждое испытание, пытается случайно вызвать эти файлы, введя $ExcelList в пространство с запросом файла условий. Как я понимаю, команда для $ExcelList должна получить доступ к файлу условий во внешнем цикле и вытащить один из файлов, содержащих позиции стимулов для этого испытания. Тем не менее, я вместо этого представлены со следующей ошибкой:Psychopy: вызывать файл условий из файла условий внешнего цикла

File "/Users/bencline/Desktop/Psychexp/NegPriming2080_lastrun.py", line 247, in module> trialList=data.importConditions(ExcelList), File "/Applications/PsychoPy2.app/Contents/Resources/lib/python2.7/psychopy/data.py", line 1366, in importConditions raise ImportError('Conditions file not found: %s' %os.path.abspath(fileName)) ImportError: Conditions file not found: /Users/bencline/Desktop/Psychexp/Trials_20_95.xlsx

Казалось бы, что внутренний цикл не находит состояние во внешнем контуре (или не читает внешний цикл в целом). Если я пытаюсь вместо написания $eval(ExcelList) я представил следующую ошибку:

File "/Users/bencline/Desktop/Psychexp/NegPriming2080_lastrun.py", line 247, in trialList=data.importConditions(eval(ExcelList)), File "", line 1, in NameError: name 'Trials_20_95' is not defined

Это кажется более показателен основной проблемы, но я до сих пор не знаю, как действовать дальше. Есть ли у вас какие-либо предложения относительно того, почему это происходит и как я могу это исправить?

Спасибо,

-Бен

ответ

1

Ваша стратегия является правильным. Он читает ваш ExcelList во внешнем цикле, но не находит имена файлов в ExcelList в вашей файловой системе. В частности, в вашем первом сообщении об ошибке он не находит /Users/bencline/Desktop/Psychexp/Trials_20_95.xlsx. Поэтому проверьте, действительно ли он существует. Я сильно подозреваю, что он не из-за одного или обоих из них:

  • Он находится в другой папке, например. вложенную папку. Решение состоит в том, чтобы записать путь (относительный или абсолютный) в файле ExcelList.
  • Указывается по-разному, например. с небольшим T или капиталом postfix (XLSX), пробел или подобное. Разумеется, решение состоит в том, чтобы сделать имена файлов в ExcelList, и фактические имена файлов совпадают.
+2

Jonas почти наверняка исправил первую проблему: система работает, в которой происходит извлечение имени файла («Trials_20_95.xlsx») из файла внешних условий, но просто не может его найти. У вас есть это в подкаталоге? Вторая ошибка заключается в том, что 'eval()' не подходит для этого. У вас есть строка, представляющая имя файла («Trials_20_95.xlsx»), но использование 'eval' пытается превратить это в имя переменной, которого не существует (обратите внимание, что Python отменил часть« .xlsx »здесь: он интерпретирует .xlsx как атрибут переменной под названием «Trials_20_95»). –

+0

Большое спасибо Jonas. Оказывается, это была простая проблема с каталогом, как вы и Майкл предположили. Я переместил эксперимент с другого компьютера и в процессе создавая каталоги в текущей системе, я пропустил, что на пути добавлен подкаталог. Еще раз спасибо за вашу помощь. Я редактировал файл Excel, чтобы включить подкаталог в его поиск, и теперь все работает гладко. –

+0

этот ответ решил вашу проблему, пожалуйста, примите его, отметив его, чтобы другие могли видеть, что есть решение. Я рад, что вы нашли решение. –

Смежные вопросы