gzip файл в Python

Возможно, вы сможете сделать это с помощью xpath. что-то вроде //tr[contains(@class, 'row') and position() mod 2 = 0] может работать. Существуют другие вопросы SO, расширяющие подробности о том, как более точно сопоставлять классы.

29
задан Rinks 16 November 2011 в 18:25
поделиться

7 ответов

Попробуйте:

check_call(['gzip', fullFilePath])

В зависимости от того, что вы делаете с данными этих файлов, ссылка Скирмантаса на http://docs.python.org/library/gzip.html также может быть полезным. Обратите внимание на примеры в нижней части страницы. Если вам не нужен доступ к данным или у вас нет данных уже в вашем коде Python, выполнение gzip может быть самым чистым способом сделать это, поэтому вам не нужно обрабатывать данные в Python.

17
ответ дан retracile 16 November 2011 в 18:25
поделиться
import gzip

def gzip_file(src_path, dst_path):
    with open(src_path, 'rb') as src, gzip.open(dst_path, 'wb') as dst:
        for chunk in iter(lambda: src.read(4096), b""):
            dst.write(chunk)
2
ответ дан mechatroner 16 November 2011 в 18:25
поделиться

Используйте модуль gzip :

import gzip
import os

in_file = "somefile.data"
in_data = open(in_file, "rb").read()
out_gz = "foo.gz"
gzf = gzip.open(out_gz, "wb")
gzf.write(in_data)
gzf.close()

# If you want to delete the original file after the gzip is done:
os.unlink(in_file)

Ваша ошибка: OSError: [Errno 2] No such file or directory' сообщает, что файл fullFilePath не существует. Если вам все еще нужно идти по этому пути, убедитесь, что файл существует в вашей системе, и вы используете абсолютный путь, а не относительный.

5
ответ дан chown 16 November 2011 в 18:25
поделиться

Есть модуль gzip . Использование:

Пример того, как создать сжатый файл GZIP:

import gzip
content = b"Lots of content here"
f = gzip.open('/home/joe/file.txt.gz', 'wb')
f.write(content)
f.close()

Пример того, как GZIP сжать существующий файл:

import gzip
f_in = open('/home/joe/file.txt')
f_out = gzip.open('/home/joe/file.txt.gz', 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()

РЕДАКТИРОВАТЬ :

Ответ Джейса Браунинга с использованием with в Python> = 2.7, очевидно, более краткий и читаемый, поэтому мой второй фрагмент будет (и должен) выглядеть так:

import gzip
with open('/home/joe/file.txt', 'rb') as f_in, gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
    f_out.writelines(f_in)
59
ответ дан Xaerxess 16 November 2011 в 18:25
поделиться

В формате Python 2.7:

import gzip

with open("path/to/file", 'rb') as orig_file:
    with gzip.open("path/to/file.gz", 'wb') as zipped_file:
        zipped_file.writelines(orig_file)

Еще короче (проверено на python 2.7.6)

with open('path/to/file') as src, gzip.open('path/to/file.gz', 'wb') as dst:        
    dst.writelines(src)
30
ответ дан martineau 16 November 2011 в 18:25
поделиться

документация по этому вопросу на самом деле безумно проста

Пример того, как читать сжатый файл:

import gzip
f = gzip.open('file.txt.gz', 'rb')
file_content = f.read()
f.close()

Пример того, как создать сжатый файл GZIP:

import gzip
content = "Lots of content here"
f = gzip.open('file.txt.gz', 'wb')
f.write(content)
f.close()

Пример того, как GZIP сжимает существующий файл:

import gzip
f_in = open('file.txt', 'rb')
f_out = gzip.open('file.txt.gz', 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()

https://docs.python.org/2/library/gzip.html

Вот и вся документация. , ,

4
ответ дан O.rka 16 November 2011 в 18:25
поделиться

Из документов для Python3

Gzip существующий файл

import gzip
import shutil
with open('file.txt', 'rb') as f_in:
    with gzip.open('file.txt.gz', 'wb') as f_out:
        shutil.copyfileobj(f_in, f_out)

# or because I hate nested with statements

import gzip
import shutil
from contextlib import ExitStack
with ExitStack() as stack:
    f_in = stack.enter_context(open('file.txt', 'rb'))
    f_out = stack.enter_context(gzip.open('file.txt.gz', 'wb'))
    shutil.copyfileobj(f_in, f_out)

Создайте новый файл GZIP:

import gzip
content = b"Lots of content here"
with gzip.open("file.txt.gz", "wb") as f:
    f.write(content)

Обратите внимание на тот факт, что контент превращается в байты

Еще один метод, если вы не создаете контент в виде строкового / байтового литерала, как в приведенном выше примере, будет

import gzip
# get content as a string from somewhere else in the code
with gzip.open("file.txt.gz", "wb") as f:
    f.write(content.encode("utf-8"))

См. этот вопрос SO для обсуждения других методов кодирования.

2
ответ дан Michael Hall 16 November 2011 в 18:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: