Подтвердить что ты не робот

Gzip файл в Python

Я хочу gzip файл в Python. Я пытаюсь использовать subprocss.check_call(), но он продолжает терпеть неудачу с ошибкой "OSError: [Errno 2] Нет такого файла или каталога". Есть ли проблема с тем, что я здесь пытаюсь сделать? Есть ли лучший способ для gzip файла, чем использование subprocess.check_call?

from subprocess import check_call

def gZipFile(fullFilePath)
    check_call('gzip ' + fullFilePath)

Спасибо!!

4b9b3361

Ответ 1

Попробуйте следующее:

check_call(['gzip', fullFilePath])

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

Ответ 2

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

Пример создания сжатого файла GZIP:

import gzip
content = "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()

EDIT:

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

import gzip
with open('/home/joe/file.txt') as f_in, gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
    f_out.writelines(f_in)

Ответ 3

В формате 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)

Ответ 4

Используйте модуль 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

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

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

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

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