gpt4 book ai didi

python - 验证来自 stdin 的 zip 文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:44 26 4
gpt4 key购买 nike

在对 unzip(1L) 感到沮丧之后,我一直在尝试创建一个脚本,该脚本将解压缩并打印出来自 stdin 的 zip 存档中所有文件的原始数据.我目前有以下有效的方法:

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)

当我尝试添加验证以检查它是否真的是一个 zip 文件时,它不喜欢它。

...

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。

最佳答案

您应该将 stdin 传递给 is_zipfile,而不是 zipselectis_zipfile 采用文件或文件对象的路径,而不是 ZipFile

参见 the zipfile.is_zipfile documentation

ZipFile 不能查找是正确的,因为它不是文件。它是一个存档,因此它可以包含许多文件。

关于python - 验证来自 stdin 的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com