文件不存在时无法绕过错误

问题描述

我正在尝试使用熊猫读取每个Test文件夹中的“ Data.csv”文件。 有多个名为“ Test”的文件夹(Test1,Test2,Test3等)。这些测试文件夹具有Data.csv所在的名为“ ArchivedFiles.zip”的压缩zip文件。 但是,如果其中一个“测试”文件夹没有“ Data.csv”文件,则无法执行此代码。如果存档文件夹中没有Data.csv,我希望能够继续前进。我不确定自己在做什么错。

这是我要处理的方式:

for x in Test:
    print(f"{x}:")
    zf = zipfile.ZipFile(x + '/ArchivedFiles.zip')
    try:
        df = pd.read_csv(zf.open('Data.csv'))
        df_filter= df[['Time','Name',"Type","Status","Counters"]]
        testFilter = df_filter[(df_filter.Type == 'Test')]
        if testFilter['Status'].str.contains('Fail').any():
            finalTable= testFilter[(testFilter.Status == 'Fail')]
            if finalTable.empty:
                print("Table Empty")
            else:
                fullFinalTable= finalTable[['Time',"Counters"]]
                finalTableFilter = fullFinalTable.to_string()
                print(finalTableFilter)
        else:
            print("No Fails")
    except OSError:
        pass

这是我收到的错误消息

line 508,in <module>
    df = pd.read_csv(zf.open('Data.csv'))
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\python36_64\lib\zipfile.py",line 1352,in open
    zinfo = self.getinfo(name)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\python36_64\lib\zipfile.py",line 1281,in getinfo
    'There is no item named %r in the archive' % name)
KeyError: "There is no item named 'Data.csv' in the archive"

解决方法

您收到KeyError,因此请注意:

except KeyError:
  pass

最好是捕获所有错误:

except:
  pass

此外,您还将获得布尔值:

import os.path
os.path.exists('data.csv')
,

您得到的是KeyError而不是OSError。使用-

except KeyError:
    pass