После некоторого разочарования в связи с unzip(1L)
я пытался создать сценарий, который будет распаковывать и распечатывать необработанные данные из всех файлов в zip-архиве, поступающем из stdin.В настоящее время у меня есть следующее, которое работает:
import sys, zipfile, StringIO
stdin = StringIO.StringIO(sys.stdin.read())
zipselect = zipfile.ZipFile(stdin)
filelist = zipselect.namelist()
for filename in filelist:
print filename, ':'
print zipselect.read(filename)
Когда я пытаюсь добавить проверку, чтобы проверить, является ли это действительно файл почтового индекса, однако, это не нравится.
...
zipcheck = zipfile.is_zipfile(zipselect)
if zipcheck is not None:
print 'Input is not a zip file.'
sys.exit(1)
...
приводит к
File "/home/chris/simple/zipcat/zipcat.py", line 13, in <module>
zipcheck = zipfile.is_zipfile(zipselect)
File "/usr/lib/python2.7/zipfile.py", line 149, in is_zipfile
result = _check_zipfile(fp=filename)
File "/usr/lib/python2.7/zipfile.py", line 135, in _check_zipfile
if _EndRecData(fp):
File "/usr/lib/python2.7/zipfile.py", line 203, in _EndRecData
fpin.seek(0, 2)
AttributeError: ZipFile instance has no attribute 'seek'
Я предполагаю, что он не может искать, потому что это не файл, как таковой?
Извините, если это очевидно, это мой первый шаг сPython.