Как работать с CSV-файлами в заархивированной папке?
Я работаю с заархивированными файлами в Python в первый раз, и я в тупике.
Я прочитал документацию по zipfile, но я не уверен, что будет лучшим способом сделать то, что я пытаюсь сделать. У меня есть zip-папка с CSV-файлами внутри, и я хотел бы иметь возможность открыть zip-файл и извлечь определенные значения из csv-файлов внутри.
Использую ли я zipfile.extract(имя файла здесь), чтобы перенести его в текущий рабочий каталог? И если я сделаю это, я просто использую имя файла для работы с файлом, или этот индекс или список их по-другому?
В настоящее время я вручную извлекаю все файлы в zip-папке в текущий рабочий каталог моего проекта, а затем использую модуль csv для их чтения. Все, что я действительно пытаюсь сделать, это удалить этот шаг.
Любая помощь будет принята с благодарностью!
1 ответ
Вы хотите избежать распаковки на диск, в zip docs для python есть ZipFile.open()
который дает вам файл-подобный объект. Это объект, который в основном ведет себя как обычный файл на диске, но находится в памяти. При чтении выдает массив байтов, по крайней мере, в py3.
Что-то вроде этого...
from zipfile import ZipFile
import csv
with ZipFile('abc.zip') as myzip:
print(myzip.filelist)
for mf in myzip.filelist:
with myzip.open(mf.filename) as myfile:
mc = myfile.read()
c = csv.StringIO(mc.decode())
for row in c:
print(row)
Документация Python на самом деле довольно хороша, как только вы узнаете, как находить вещи, а также некоторые основные термины / описания программирования, используемые в документации. По какой-то причине csv.BytesIO
не реализован, следовательно, дополнительный шаг через csv.StringIO
,