在zip存档中打开二进制文件作为ZipExtFile

时间:2017-02-14 18:20:09

标签: python iterator zipfile

我试图从Zip档案中包含的数据文件中访问二进制流(通过ZipExtFile对象)。要从存档中逐步读入文本文件对象,这将非常简单:

with ziparchive as ZipFile("myziparchive.zip", 'r'):
    with txtfile as ziparchive.open("mybigtextfile.txt", 'r'):
       for line in txtfile:
           ....

理想情况下,等效的字节流将类似于:

with ziparchive as ZipFile("myziparchive.zip", 'r'):
    with binfile as ziparchive.open("mybigbinary.bin", 'rb'):
        while notEOF
            binchunk = binfile.read(MYCHUNKSIZE)
            ....

不幸的是,ZipFile.open似乎不支持将二进制数据读取到ZipExtFile对象。来自docs

  

模式参数(如果包含)必须是以下之一:' r'   (默认),' U'或' rU'。

鉴于此约束,如何直接从存档中逐步读取二进制文件?由于未压缩文件非常大,我想首先避免提取它。

2 个答案:

答案 0 :(得分:0)

我设法解决了我在对OP的评论中描述的问题。我已经在这里修改了它,但是我认为可能只是改变chunk_str的编码,以避免使用ByteIO。

无论如何 - 这是我的代码,如果它有帮助:

var permission = [];
            for (var i = 0; i < ids.length; i++) {
                var item = ids[i];
                var select4 = 'select.' + item;
                permission.push($(select4).find('option:selected').val())
            }

            alert(permission);

答案 1 :(得分:0)

逐行阅读:

       <script>
            $(function () {
                $("#modelo").autocomplete({
                    source: '{% url 'data-AutocompleteModelo' %}',
                    minLength: 1
                });
            });
        </script>