问题描述
我正在尝试使用熊猫读取每个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