Python名称错误处理-如何捕获异常



在试图将文件解析为Pandas DataFrame时,如何捕获NameError。

下面的代码:

try:
for filename in os.listdir():
if filename.endswith('.txt'):
df = pd.read_csv(filename)
break
except NameError:
print('No SVP file in directory. Please copy from Survey Online directory')

如果我的文件夹中没有*.txt文件,它会抛出我无法捕获的NameError。它无法归档文件,因此未定义"df"。

下面的错误:

NameError: name 'df' is not defined

您使用的逻辑没有多大意义。如果代码出现问题,将抛出(并捕获(异常。没有任何东西会在代码中引发异常。如果没有.txt文件,则永远不会定义df。如果您尝试访问df,但它不存在,则情况会有所不同。例如,试试这个:

for filename in os.listdir():
if filename.endswith('.txt'):
df = pd.read_csv(filename)
break
try:
df.head()
except NameError:
print('No SVP file in directory. Please copy from Survey Online directory')

您的代码应该是这样的:

import os
import pandas as pd
try:
for filename in os.listdir():
if filename.endswith('.txt'):
df = pd.read_csv(filename)
break
except Exception as err:
print(f'Some error occured -  {err} ')
# write try catch block when you are trying to access the `df` variable when it could be non-existent.
try:
print(df)
except NameError:
print('No SVP file in directory. Please copy from Survey Online directory')

输出:

No SVP file in directory. Please copy from Survey Online directory

这有一种模式。我个人更喜欢它稍后捕获异常,因为它非常清楚代码在做什么。

for filename in os.listdir():
if filename.endswith('.txt'):
df = pd.read_csv(filename)
break
else:
# your error code here

最新更新