0

したがって、何かを行う for ループがあり、上記の try-except ステートメントを作成する必要があります (ファイルを開くときに使用され、ファイルが見つからない場合は例外)、以下の for ループで構文エラーが発生しますそれ(ただし、間違ったファイルを選択すると例外メッセージが表示されます)。例外を受け取った後、プログラムがループを実行しないようにするにはどうすればよいですか?

break を使用することはそれと関係があるかもしれないと思いますが、その方法はよくわかりません。例外メッセージが出力されてから中断するか、そのようなものに沿って何かを考えています。これは問題のコードです:

def getIngredients(path, basename):
  ingredient = []
  filename = path + '\\' + basename
  try:
    file = open(filename, "r")
  except:
    printNow("File not found.")

  for item in file: 
    if item.find("name") > -1:
      startindex = item.find("name") + 5
      endindex = item.find("<//name>") - 7
      ingredients = item[startindex:endindex]
      ingredient.append(ingredients)

  del ingredient[0]
  del ingredient[4]


  for item in ingredient:
    printNow(item)

基本的に、例外を取得するために間違ったファイルを選択したため、ファイルを使用する下の for ループでエラーが発生します。

4

4 に答える 4

1

ファイルが見つからない場合にどうするかを決める必要があります。

関数から単純に戻ることを選択できます。

def getIngredients(path, basename):
    ingredient = []
    filename = path + '\\' + basename
    try:
        file = open(filename, "r")
    except IOError:                 # Never use a bare "except"! Be specific!
        printNow("File not found.")
        return

    for item in file: 
        ...

    return ingredient

そうすれば、呼び出し元は戻り値から関数が正常に完了したかどうかを確認できます (問題がある場合)。

  • ループが実行される前にエラーが発生した場合は、Noneが返されます。
  • ループで一致するものが見つからない場合は、空のリスト[]が返されます。
  • それ以外の場合は、結果のリストが返されます。
于 2012-05-12T07:57:48.400 に答える
0

それから抜け出すために、ループで breakしばらくオンを使用してください。except

>>> while True:  
...     try:  
...         x = int(raw_input("Please enter a number: "))  
...     except ValueError:  
...         print "Oops! That was no valid number. Try again..."  
...         break  
...
于 2012-05-12T07:49:59.220 に答える
0

ファイルが間違っている場合は、関数を終了したいと思います。次に、これはそれを行います:

except:
  printNow("File not found.")
  return
于 2012-05-12T07:56:38.527 に答える
0

あなたの質問について私が理解していることから、例外に遭遇するたびに、flag変数を1(またはtrue) に設定します。次に、単にあなたを包み込みますloop-if-statementが設定されているif場合は、実行しないでください。それ以外の場合は実行します。flagloop

または、(何らかの理由で) ループに入る必要がある場合はif clause、ループの内側を選択し、breakステートメントを使用してループから抜け出すか終了することができます。

Python の break ステートメントの詳細と、ループ内での使用方法の例。

于 2012-05-12T07:45:38.023 に答える