Для экономии места большие текстовые файлы с данными можно упаковывать в архив, а затем из программы на Питоне считывать нужные файлы прямо из архива. Например, если имеется папка data_files
, в которой файлы data1.txt
, data2.csv
, data3.dat
, … то её можно запаковать в ZIP-архив
zip data_files.zip data_files
после чего открывать файлы данных следующим образом1):
data_zipfile = zipfile.ZipFile('data_files.zip','r') data_file = data_zipfile.open('data_files/data1.txt')
Узнать, какие файлы содержатся в ZIP-архиве можно так:
data_zipfile.namelist()
Далее можно производить считывание, как из обычного файла методами read()
, readline()
или readlines()
.
Аналогично можно создать tar.gz
или tar.bz2
архивы2):
tar -cvzf data_files.tar.gz data_files
или
tar -cvjf data_files.tar.bz2 data_files
и обращаться к файлам в них так:
data_tar = tarfile.open("data_files.tar.gz") data_file = data_tar.extractfile(data_files/data2.csv)
или
data_tar = tarfile.open("data_files.tar.bz2") data_file = data_tar.extractfile(data_files/data3.dat)
Следует обратить внимание, что при обращении к файлу внутри архива нужно указывать полный путь к файлу внутри архива, ведь в архиве могут храниться каталоги с файлами или вложенными каталогами, и файл может располагаться в каком-либо из них.
Чтобы узнать, какие файлы находятся внутри TAR-архива, служит функция:
data_tar.getnames()
Пориньте у Python 3 - перевод известной книги “Dive into Python 3”.
В глубь языка Python (перевод “Dive into Python” для версии 2)