Python 2.7: ошибка не обнаружена исключением из-за «повышения» - PullRequest
0 голосов
/ 05 июля 2018

Вот мой код:

import pandas as pd
df2 = pd.DataFrame()

try:
    df_task = df_task.append(df2, ignore_index = True)
except NameError:
    df_task = df2
raise

Выдает эту ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "/home/cld_intern/.spyder2/.temp.py", line 12, in <module>
    df_task = df_task.append(df2, ignore_index = True)
NameError: name 'df_task' is not defined

Блок исключений должен перехватывать NameError, но каким-то образом включение параметра "повысить" без указания исключения для создания приводит к возникновению ошибки NameError. Почему это так?


Это отлично работает:

import pandas as pd
df2 = pd.DataFrame()

try:
    df_task = df_task.append(df2, ignore_index = True)
except NameError:
    df_task = df2

Это также работает как ожидалось:

import pandas as pd
df2 = pd.DataFrame()

try:
    df_task = df_task.append(df2, ignore_index = True)
except NameError:
    df_task = df2
raise Exception("error message")

Со следующей трассировкой:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "/home/cld_intern/.spyder2/.temp.py", line 15, in <module>
    raise Exception("error message")
Exception: error message

1 Ответ

0 голосов
/ 05 июля 2018

в питоне 3:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'df_task' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
NameError: name 'df2' is not defined

в python2.7

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
NameError: name 'df2' is not defined

Вы уверены, что используете Python 2.7? Как упоминалось в комментарии, я думаю, df2 не определен.

...