Correction de l'erreur EOF While Parsing in Python

Correction de l'erreur EOF While Parsing in Python

SyntaxError: unexpected EOF while parsing se produit lorsqu’un interpréteur atteint la fin d’un fichier avant d’exécuter un bloc de code.

C’est souvent le signe qu’il manque une partie du code. Nous devons localiser l’erreur syntaxique et la corriger.

Les interpréteurs Python modernes tels que Pycharm mettent souvent en évidence la section de code qui doit être corrigée. Le plus souvent, la résolution de l’erreur consiste à ajouter la section de code manquante.

L’utilisation de boucles for nécessite souvent l’ajout de code dans le code. Le fait de ne pas ajouter de code dans le corps, vous obtiendrez l’erreur unexpected EOF while parsing.

Les boucles for sont souvent utilisées pour itérer sur certains itérables ; dans certains scénarios, nous pouvons échouer à ajouter du code au corps de la boucle for. C’est l’un des scénarios qui entraînent une telle erreur.

names  = ['Tesla', 'Lucid', 'Samsung']

for company in names:

Production :

File "<string>", line 14
    
    ^
SyntaxError: unexpected EOF while parsing

Selon la syntaxe Python correcte, le compilateur s’attend à exécuter du code après l’indentation.

Ce nouveau code dans le bloc d’indentation fait partie du corps de la boucle for. Par conséquent, nous devons nous assurer que le corps de la boucle contient du code pour éviter la fin inattendue du fichier et se conformer à la syntaxe Python correcte.

Nous pouvons corriger cette erreur, comme indiqué dans le code ci-dessous.

names  = ['Tesla', 'Lucid', 'Samsung']

for company in names:
    result = company.upper()
    print(result)

Production :

TESLA
LUCID
SAMSUNG

Cette erreur peut également survenir lorsque vous travaillez avec des instructions if-else. les instructions if sont utilisées pour exécuter un bloc de code sur une condition donnée; le bloc indenté dans une instruction if forme le corps de toutes les instructions if.

En plus d’être utilisé comme délimiteur et de définir des fonctions, un deux-points complet signifie le début des blocs de code dans les instructions if. Le fait de ne pas écrire de code dans le bloc précédant les deux-points complets entraînerait un EOF file while parsing errors.

Vous trouverez ci-dessous un exemple montrant comment cette erreur se produit.

company_name = "tesla"

if company_name.upper() == True:

Production :

File "<string>", line 4
    
    ^
SyntaxError: unexpected EOF while parsing

Cette erreur peut être corrigée en s’assurant que l’instruction if contient du code dans son corps, comme indiqué ci-dessous.

company_name = "tesla"

if company_name.isupper() == True:
   print(company_name.lower())
else:
    print(company_name.upper())

Production :

TESLA

L’interpréteur lèvera également l’erreur EOF while parsing si aucun code n’est écrit dans le corps de l’instruction else qui suit immédiatement une instruction if. Cette erreur sera renvoyée même s’il existe un code valide dans le bloc d’instruction if.

Par conséquent, les deux blocs de code doivent être complets pour écrire une instruction if-else réussie. Sinon, nous obtiendrons l’erreur EOF while parsing.

number = input("Please Enter a number: ")

if number%2 == 0:
    print("This is an even number:")
else:

Production :

File "<string>", line 7
    
    ^
SyntaxError: unexpected EOF while parsing

Nous devons nous assurer que l’autre partie a un corps complet pour corriger cette erreur. Certaines instructions if ne nécessitent pas d’instructions else ; dans un tel cas, nous n’avons pas du tout besoin d’instructions else.

number = int(input("Please Enter a number: "))

if number%2 == 0:
    print("This is a even number")
else:
    print("This is not an even number")

Production :

Please Enter a number: 23
This is not an even number

Cette erreur se produit également si le corps de la boucle while est trop défini. De même, l’erreur peut être corrigée en s’assurant que le corps de la boucle while est fourni.

i = 10
while i < 6:

Production :

File "<string>", line 3
    
    ^
SyntaxError: unexpected EOF while parsing

L’erreur peut également survenir lors de l’utilisation de fonctions si le corps de la fonction n’est pas fourni.

Dans les grands programmes avec plusieurs fonctions, nous pouvons vouloir implémenter une fonction à l’avenir. Ainsi, il ne serait pas inutile de définir tout de suite le corps de la fonction.

Cela peut également être le cas lorsque l’on n’a pas encore décidé de sa fonctionnalité. La fonction ci-dessous est censée calculer la somme de deux nombres.

Cependant, le corps contenant les instructions indiquant ce que la fonction doit faire n’est pas déclaré. Cela entraîne une erreur, comme indiqué ci-dessous.

def add_numbers(num1, num2):

Production :

File "<string>", line 3
    
    ^
SyntaxError: unexpected EOF while parsing

Cette erreur peut être corrigée en écrivant les instructions qui définissent la fonction, comme illustré dans l’exemple ci-dessous.

def add_numbers(num1, num2):
    result = num1 + num2
    print(result)
    
add_numbers(23, 45)

Production :

68

Si on ne veut pas préciser ce que la fonction implémente, on peut aussi utiliser le mot clé pass. L’interpréteur ignore l’instruction pass, donc rien n’est exécuté.

Nous pouvons également utiliser cette instruction pour éviter d’exécuter des fonctions que nous ne voulons pas implémenter immédiatement. Le mot-clé pass peut être utilisé pour éviter l’erreur EOF while parsing, comme indiqué dans l’exemple ci-dessous.

def add_numbers(num1, num2):
    pass

Production :

Un EOF inattendu lors de l’analyse peut également résulter de parenthèses manquantes dans les fonctions ou les instructions qui utilisent des parenthèses.

La fonction print et de nombreuses autres fonctions Python intégrées sont exécutées à l’aide de parenthèses. Lorsque l’on écrit du code dans l’urgence, de telles petites erreurs de syntaxe peuvent souvent être commises sans le savoir ; il en résulte l’erreur EOF while parsing comme le montre l’exemple ci-dessous.

def say_hello():
    print("Hello user welcome on board"

Production :

File "<string>", line 2
    
    ^
SyntaxError: unexpected EOF while parsing

Cette erreur ne peut être résolue qu’en s’assurant qu’aucune parenthèse n’est laissée ouverte.

Les interprètes modernes vous informent souvent qu’il y a une erreur avant de passer à la ligne suivante. Cette erreur s’étend également aux fonctions auto-définies.

L’appel incorrect de fonctions entraînerait également cette erreur. Le code ci-dessous montre qu’une manière incorrecte d’appeler une fonction auto-définie constitue un échec à utiliser les deux parenthèses.

def add_sum(num1, num2):
    print(num1 + num2)
 
add_sum(23, 78

Production :

  File "e:\CodeBerry\eoferroinpython.py", line 8
    
    ^
SyntaxError: unexpected EOF while parsing

Les tests Python try et except pour la présence d’erreurs dans notre code qui pourraient faire arrêter nos programmes et les gérer, respectivement.

Le bloc try ne peut pas fonctionner comme une méthode autonome et doit toujours accompagner un bloc except. L’utilisation du bloc try pour tester un morceau sans spécifier de code dans le bloc except entraîne le SyntaxError : unexpected EOF while parsing comme indiqué ci-dessous.

number = int(input("Please enter a number:"))

def add_numbers(number):
    try:
        print(number + 2)
        
    except ValueError:

Production :

File "<string>", line 7
    
    ^
SyntaxError: unexpected EOF while parsing
Author: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Article connexe - Python Error

  • Correction de TabError en Python
  • Correction de l'erreur Python Return Outside Function
  • Correction de l'erreur String Must Be Indices en Python
  • Correction de l'erreur syntaxerror: unexpected character after line continuation character en Python
  • Correction de l'erreur TypeError: iteration over a 0-d array dans Python NumPy
  • Correction de l'erreur TypeError: must be str, not int en Python