NameError issue

Hi all,
Total noob with PsychoPy trying to make a script work on my machine (Mac OS Catalina 10.15.7). The script works fine on another machine but with mine I get a NameError warning.

The bit of code that seems problematic is shown below. Its a neuroscience study in which we select various stimulus files stored in the csv format depending on different conditions. The variable defining which scenario is used is csv_file. We then try to read this file with pd.read_csv(csv_file)…

Define trials from csv

if expInfo[‘site’] == ‘LeftTP’:
# load left TP trials
if expInfo[‘session’] == ‘PreTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses1_run1.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses1_run2.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses1_run3.csv”
elif expInfo[‘session’] == ‘PostTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses1_run4.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses1_run5.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses1_run6.csv”
elif expInfo[‘site’] == ‘RightTP’:
# load right TP trials
if expInfo[‘session’] == ‘PreTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses2_run1.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses2_run2.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses2_run3.csv”
elif expInfo[‘session’] == ‘PostTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses2_run4.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses2_run5.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses2_run6.csv”
elif expInfo[‘site’] == ‘LeftPreCG’:
# load Left M1 trials
if expInfo[‘session’] == ‘PreTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses3_run1.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses3_run2.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses3_run3.csv”
elif expInfo[‘session’] == ‘PostTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses3_run4.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses3_run5.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses3_run6.csv”
elif expInfo[‘site’] == ‘Vertex’:
# load Vertex trials
if expInfo[‘session’] == ‘PreTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses4_run1.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses4_run2.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses4_run3.csv”
elif expInfo[‘session’] == ‘PostTMS’:
if expInfo[‘run’] == 1:
csv_file = “trial_list/trials_ses4_run4.csv”
elif expInfo[‘run’] == 2:
csv_file = “trial_list/trials_ses4_run5.csv”
elif expInfo[‘run’] == 3:
csv_file = “trial_list/trials_ses4_run6.csv”

Import comma separated trial list

trial_csv = pd.read_csv(csv_file)

But I get this unique error message:

Traceback (most recent call last):
File “/Path/to/script.py”, line 122, in
trial_csv = pd.read_csv(csv_file)
NameError: name ‘csv_file’ is not defined

Experiment ended.

Any idea what that could be. Can send other bits of code if needed.

Thanks!
Nick

Hello Nick,

you code is really difficult to read because you forget to add triple ` around it. This gives proper formatting in this forum enhancing reading and error detection :smiley: You probably figured yourself that the program complains that csv_file is not defined. Did you initialise csv_file somewhere?

Best wishes Jens

Hi Jens,
Thanks for your reply. Sorry I missed the triple `. Will keep it in mind for next time :wink:
In the mean time I found the solution, i.e.: quoting the values of expInfo, which works with txt.
Thanks again for being willing to help!
Nick