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)
Спасибо!!
Ответы
Ответ 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
Это вся документация.,