我正在尝试对压缩文件进行一些文件操作。我有点困惑为什么文件像对象.open返回一个不可寻找的文件。任何人都可以对此有所了解吗?
这是我正在使用的代码。我怎样才能使file_like可以搜索?
zipped_archive = ZipFile(filepath, mode='r')
file_like = zipped_archive.open(file_name, mode='r')
file_like.seekable() # returns False
答案 0 :(得分:3)
ZipFile.open
方法returns ZipExtFile
io.IOBase
实施搜索的对象。 False
中可搜索的does not为{"sets":[{"title":"342","objectId":"1j9p9R1xzM"},{"title":"bkjkjb","objectId":"esHE2WIEkN"}]}
。
我不确定为什么搜索从未实现,但我猜测在压缩文件中按字节搜索可能因某些原因而难以实现。
答案 1 :(得分:2)
在Python 3.7版(issue)
中修复答案 2 :(得分:0)
一个对我有帮助的非常有用且简单的解决方法是在我使用的文件中添加可搜索的内容:
def add_seekable_to_file(f):
"""
If file f does not has seekable function -
add seekable function that will always return true
Args:
f: the file
Returns: the file f with seekable function
"""
if not hasattr(f, "seekable"):
# AFAICT all the filetypes that STF wraps can seek
f.seekable = lambda: True
add_seekable_to_file(datazip.fp)