Eroare de Token: EOF într-o declarație pe mai multe rânduri (Programare, Python, Tkinter, Eof, Easygui)

gian848396 a intrebat.

Următorul cod îmi dă această eroare „Token Error: EOF in multi-line statement”. Ce este această eroare? Cum pot să o rezolv?

import easygui
import time
namegui = easygui.enterbox(msg='Enter your name:', title='Name query', default='Gian')
situationgui = easygui.enterbox(msg='Please enter your situation:', title='Thought Log(Situation)')
thoughtsgui = easygui.enterbox(msg='Please enter your thoughts:', title='Thought Log(Thoughts')
emotionsgui = easygui.enterbox(msg='Please enter your emotions: 
 Sad, Mad, Hurt, Depressed, Anxious, Tense, etc.', title='Thought Log(Emotions')
behaviorgui = easygui.enterbox(msg='Please enter your behavior:', title='Thought Log(Behavior')


thinking_trapsgui = easygui.enterbox(msg='Please identify your thinking traps: 
 
'
    'FORTUNE-TELLING: This occurs when we predict that things will turn out badly. However, we cannot predict the future because we do not have a magic ball! 
 
'
    'MIND-READING: This happens when we believe that we know what others are thinking and we assume that they are thinking the worst of us. However, we cannot mind-read so we do not know what others are thinking! 
 
'
    'LABELING: Sometimes we talk to ourselves in a mean way and we use a single negative word to describe ourselves. However, this kind of thinking is unfair and we are too complex to be summed up in a single word! 
 
'
    'FILTERING: This happens when we take note of all the bad things that happen, but ignore any good things. 
 
'
    'OVERESTIMATING: This happens when we believe that something that is unlikely to occur is actually about to happen. 
 
'
    'CATASTROPHIZING: This is when we imagine the worst possible thing is about to happen and we will be unable to cope with it. 
 
'
    'OVERGENERALIZING: This is when we use words like always or never to describe situations or events. This is a problematic way of thinking because it does not take all situation or events into account 
 
',
    title='Thought Log(Identify Your Thinking Traps)')

BAI_var = easygui.choicebox(
    msg='Please identify your thinking traps: 
 
',
    title='Thought Log(Identify Your Thinking Traps)',
    choices=('FORTUNE-TELLING: This occurs when we predict that things will turn out badly. However, we cannot predict the future because we do not have a magic ball! 
 

             'MIND-READING: This happens when we believe that we know what others are thinking and we assume that they are thinking the worst of us. However, we cannot mind-read so we do not know what others are thinking! 
 
'
             'LABELING: Sometimes we talk to ourselves in a mean way and we use a single negative word to describe ourselves. However, this kind of thinking is unfair and we are too complex to be summed up in a single word! 
 
'
             'FILTERING: This happens when we take note of all the bad things that happen, but ignore any good things. 
 
'
             'OVERESTIMATING: This happens when we believe that something that is unlikely to occur is actually about to happen. 
 
'
             'CATASTROPHIZING: This is when we imagine the worst possible thing is about to happen and we will be unable to cope with it. 
 
'
             'OVERGENERALIZING: This is when we use words like always or never to describe situations or events. This is a problematic way of thinking because it does not take all situation or events into account 
 
')


alt_behaviorgui = easygui.enterbox(msg='Please enter alternative behavior:', title='Thought Log(Alt Behavior)')
alt_thoughtsgui = easygui.enterbox(msg='Please enter alternative thoughts:', title='Thought Log(Alt Thoughts)')
yeargui = easygui.enterbox(msg='Enter the current year:', title='Current Year', default='2011')
monthgui = easygui.enterbox(msg='Enter the current month:', title='Current Month')
daygui = easygui.enterbox(msg='Enter the current day:', title='Current Day')
time_hourgui = easygui.enterbox(msg='Enter the current hour:', title='Current Hour')
time_minutegui = easygui.enterbox(msg='Please enter current minutes:', title='Current Minute')
am_pmgui = easygui.enterbox(msg='Please enter either am or pm:', title='AM OR PM')
file = open('Thought Record 1.0.txt', 'a')
file.write(namegui + '
')
file.write(daygui)
file.write('/')
file.write(monthgui)
file.write('/')
file.write(yeargui)
file.write('
')
file.write('Your situation:')
file.write(situationgui)
file.write('
')
file.write('Your thoughts:')
file.write(thoughtsgui)
file.write('
')
file.write('Your emotions:')
file.write(emotionsgui)
file.write('
')
file.write('Your behavior:')
file.write(behaviorgui)
file.write('
')
file.write('Thinking traps:')
file.write(thinking_trapsgui)
file.write('
')
file.write('Alternative bahvior:')
file.write(alt_behaviorgui)
file.write('
')
file.write('Alternative thoughts:')
file.write(alt_thoughtsgui)
file.write('
')
file.write('
')
file.close()

Această eroare a apărut doar după ce am adăugat următoarele linii de cod.

BAI_var = easygui.choicebox(
    msg='Please identify your thinking traps: 
 
',
    title='Thought Log(Identify Your Thinking Traps)',
    choices=('FORTUNE-TELLING: This occurs when we predict that things will turn out badly. However, we cannot predict the future because we do not have a magic ball! 
 

             'MIND-READING: This happens when we believe that we know what others are thinking and we assume that they are thinking the worst of us. However, we cannot mind-read so we do not know what others are thinking! 
 
'
             'LABELING: Sometimes we talk to ourselves in a mean way and we use a single negative word to describe ourselves. However, this kind of thinking is unfair and we are too complex to be summed up in a single word! 
 
'
             'FILTERING: This happens when we take note of all the bad things that happen, but ignore any good things. 
 
'
             'OVERESTIMATING: This happens when we believe that something that is unlikely to occur is actually about to happen. 
 
'
             'CATASTROPHIZING: This is when we imagine the worst possible thing is about to happen and we will be unable to cope with it. 
 
'
             'OVERGENERALIZING: This is when we use words like always or never to describe situations or events. This is a problematic way of thinking because it does not take all situation or events into account 
 
')

Rulez Python 2.5 pe Mac OS X 10.6.

Comentarii

    25

  • Iată un indiciu. Aruncați o privire la codul dvs. de mai sus și observați în mod special colorarea sintaxei. Cine ar fi crezut că SO poate fi folosit pentru a depana ghilimelele lipsă? 🙂 –  > Por paxdiablo.
5 răspunsuri
Michał Bentkowski

Prima dvs. linie din variabila choices nu are un apostrof (') la sfârșit.

Raymond Hettinger

Îți lipsește citatul de încheiere pe linia Fortune-Telling.

Aceasta este ușor de găsit, deoarece acolo evidențierea sintaxei devine diferită.

Nagev

Nu este un răspuns direct la întrebarea inițială, dar din moment ce căutarea online m-a adus aici… Am primit această eroare dintr-un alt motiv: o paranteză rătăcită! Dar a venit de la flake8. Iată un fragment de cod pentru a o reproduce:

import socket


def all_good(name):
    name_line = f"Name: {name}")
    print(name_line)

Am salvat acest lucru într-un fișier numit error.py. Acum, dacă execut flake8 pe el:

$ flake8 error.py 
error.py:1:1: E902 TokenError: EOF in multi-line statement

Ceea ce este destul de derutant, deoarece nu există nicăieri o declarație cu mai multe linii! În cele din urmă am găsit bug-ul, dar morala poveștii este că l-aș fi găsit mult mai repede dacă l-aș fi rulat prin interpretorul python:

$ python3 error.py 
  File "error.py", line 5
    name_line = f"Name: {name}")
                               ^
SyntaxError: unmatched ')'

Rezolvă-l:

import socket


def all_good(name):
    name_line = f"Name: {name}"
    print(name_line)

Și acum flake8 chiar își va face treaba:

$ flake8 error.py 
error.py:1:1: F401 'socket' imported but unused

Este evident, dar nu uitați: verificați codul cu python3 mai întâi, apoi treceți-l prin linters sau alte verificatoare.

Comentarii

  • Mulțumesc pentru sfaturile privind utilizarea interpretului! –  > Por davidag.
  • Mulțumesc, aceasta a fost exact problema mea. Din greșeală am scos o paranteză de închidere în plus la reformatarea codului. –  > Por Drew.
Russo

Soluție: Tăiați o secțiune a codului dvs. și vedeți dacă asta face ca eroarea să dispară.Dacă da, atunci problema este în partea aceea de secțiuneDacă nu, atunci găsiți o altă secțiune pe care să o tăiați… indiciu: Secțiunea la care ați lucrat ultima dată 🙂

Nages

După ce am adăugat încă o paranteză de închidere la sfârșit, eroarea „Token error: EOF in multi-line statement” a dispărut.

Ultima linie

Înainte de modificare: „OVERGENERALIZING: Aceasta este atunci când folosim cuvinte precum întotdeauna sau niciodată pentru a descrie situații sau evenimente. Acesta este un mod de gândire problematic, deoarece nu ia în considerare toate situațiile sau evenimentele

‘)

După modificare:’OVERGENERALIZING: Acesta este momentul în care folosim cuvinte precum întotdeauna sau niciodată pentru a descrie situații sau evenimente. Acesta este un mod de gândire problematic, deoarece nu ia în considerare toate situațiile sau evenimentele

‘))

Notă: Observați că la sfârșit a fost adăugat încă un ). Am testat și a funcționat.