Python で EOF While Parsing エラーを修正

Isaac Tony 2023年10月8日
Python で EOF While Parsing エラーを修正

SyntaxError: unexpected EOF while parsing は、インタープリターがコードブロックを実行する前にファイルの終わりに到達したときに発生します。

これは多くの場合、コードの一部が欠落していることを示しています。構文エラーを見つけて修正する必要があります。

Pycharm などの最新の Python インタープリターは、修正が必要なコードセクションを強調することがよくあります。多くの場合、エラーを解決するには、欠落しているコードのセクションを追加する必要があります。

for ループを使用するには、多くの場合、コードにコードを追加する必要があります。本文にコードを追加しないと、unexpected EOF while parsing というエラーが発生します。

for ループは、反復可能なものを反復処理するためによく使用されます。シナリオによっては、for ループの本体にコードを追加できない場合があります。これは、このようなエラーが発生するシナリオの 1つです。

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

for company in names:

出力:

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

正しい Python 構文によれば、コンパイラーはインデント後にコードを実行することを期待しています。

インデントブロック内のこの新しいコードは、for ループの本体の一部を形成します。したがって、ループの本体に、ファイルの予期しない終わりを回避し、正しい Python 構文に準拠するためのコードが含まれていることを確認する必要があります。

以下のコードに示すように、このエラーを修正できます。

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

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

出力:

TESLA
LUCID
SAMSUNG

このエラーは、if-else ステートメントを操作するときにも発生する可能性があります。if ステートメントは、特定の条件でコードのブロックを実行するために使用されます。if ステートメントのインデントされたブロックは、すべての if ステートメントの本体を形成します。

区切り文字および関数の定義として使用されることは別として、完全なコロンは、if ステートメントのコードブロックの開始を示します。コロン全体の前のブロックにコードを記述しないと、エラーの解析中に EOF ファイルが発生します。

以下は、このエラーがどのように発生するかを示す例です。

company_name = "tesla"

if company_name.upper() == True:

出力:

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

このエラーは、以下に示すように、if ステートメントの本体にコードが含まれていることを確認することで修正できます。

company_name = "tesla"

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

出力:

TESLA

if ステートメントの直後に続く else ステートメントの本文にコードが記述されていない場合、インタープリターは同様にエラーEOF while parsing を発生させます。if ステートメントブロックに有効なコードがある場合でも、このエラーがスローされます。

したがって、成功する if-else ステートメントを作成するには、両方のコードブロックが完成している必要があります。そうしないと、エラー EOF while parsing が発生してしまいます。

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

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

出力:

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

このエラーを修正するには、他の部分に完全な本体があることを確認する必要があります。一部の if ステートメントは else ステートメントを必要としません。このような場合、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")

出力:

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

このエラーは、while ループの本体が定義されすぎている場合にも発生します。同様に、while ループの本体が提供されていることを確認することで、エラーを修正できます。

i = 10
while i < 6:

出力:

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

関数の本体が提供されていない場合、関数を操作するときにもエラーが発生する可能性があります。

複数の関数を持つ大規模なプログラムでは、将来的に関数を実装したいと思うかもしれません。したがって、関数の本体をすぐに定義する必要はありません。

また、その機能をまだ決定していない場合もあります。以下の関数は、2つの数値の合計を計算することになっています。

ただし、関数が実行する必要があることを示すステートメントを含む本文は宣言されていません。これにより、以下に示すようにエラーが発生します。

def add_numbers(num1, num2):

出力:

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

このエラーは、次の例に示すように、関数を定義するステートメントを記述することで修正できます。

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


add_numbers(23, 45)

出力:

68

関数の実装内容を指定したくない場合は、キーワード pass を使用することもできます。インタプリタは pass ステートメントを無視するため、何も実行されません。

このステートメントを使用して、すぐに実装したくない関数を実行しないようにすることもできます。次の例に示すように、キーワード pass を使用して、エラーEOF の解析中を回避できます。

def add_numbers(num1, num2):
    pass

出力:

構文解析中の予期しない EOF は、括弧を使用する関数またはステートメントで括弧が欠落している場合にも発生する可能性があります。

print 関数および他の多くの組み込み Python 関数は、括弧を使用して実行されます。急いでコードを書くとき、そのような小さな構文エラーはしばしば無意識のうちに作られることがあります。これにより、次の例に示すように、解析中の EOF というエラーが発生します。

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

出力:

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

このエラーは、括弧が開いたままになっていないことを確認することによってのみ解決できます。

現代の通訳者は、次の行に進む前にエラーがあることを通知することがよくあります。このエラーは、自己定義関数にも適用されます。

関数を不適切に呼び出すと、このエラーも発生します。以下のコードは、自己定義関数を呼び出す不適切な方法が両方の括弧の使用の失敗を構成することを示しています。

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

出力:

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

Python の try...except は、プログラムが停止して処理する可能性のあるエラーがコードに存在するかどうかをそれぞれテストします。

try ブロックはスタンドアロンメソッドとして機能することはできず、常に except ブロックを伴う必要があります。except ブロックにコードを指定せずにピースをテストするために try ブロックを使用すると、以下のように SyntaxError: unexpected EOF while parsing が発生します。

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


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

    except ValueError:

出力:

File "<string>", line 7
    
    ^
SyntaxError: unexpected EOF while parsing
著者: 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

関連記事 - Python Error