Skip to content

Commit 09c407d

Browse files
committed
Revert changes to zip error messages
1 parent df9b25d commit 09c407d

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

pandas/io/common.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,16 @@ def _get_handle(path_or_buf, mode, encoding=None, compression=None,
334334
elif compression == 'zip':
335335
import zipfile
336336
zip_file = zipfile.ZipFile(path_or_buf)
337-
try:
338-
name, = zip_file.namelist()
339-
except ValueError:
340-
raise ValueError('Zip file must contain exactly one file {}'
337+
zip_names = zip_file.namelist()
338+
if len(zip_names) == 1:
339+
f = zip_file.open(zip_names.pop())
340+
elif len(zip_names) == 0:
341+
raise ValueError('Zero files found in ZIP file {}'
341342
.format(path_or_buf))
342-
f = zip_file.open(name)
343+
else:
344+
raise ValueError('Multiple files found in ZIP file.'
345+
' Only one file per ZIP: {}'
346+
.format(zip_names))
343347

344348
# XZ Compression
345349
elif compression == 'xz':

pandas/io/tests/parser/compression.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@ def test_zip(self):
4545
tmp.writestr(file_name, data)
4646
tmp.close()
4747

48-
self.assertRaisesRegexp(ValueError, 'must contain exactly one file',
48+
self.assertRaisesRegexp(ValueError, 'Multiple files',
4949
self.read_csv, path, compression='zip')
5050

51-
self.assertRaisesRegexp(ValueError, 'must contain exactly one file',
51+
self.assertRaisesRegexp(ValueError, 'Multiple files',
5252
self.read_csv, path, compression='infer')
5353

5454
with tm.ensure_clean() as path:
5555
tmp = zipfile.ZipFile(path, mode='w')
5656
tmp.close()
5757

58-
self.assertRaisesRegexp(ValueError, 'must contain exactly one file',
58+
self.assertRaisesRegexp(ValueError, 'Zero files',
5959
self.read_csv, path, compression='zip')
6060

6161
with tm.ensure_clean() as path:

0 commit comments

Comments
 (0)