Возможно, вы сможете сделать это с помощью xpath. что-то вроде //tr[contains(@class, 'row') and position() mod 2 = 0]
может работать. Существуют другие вопросы SO, расширяющие подробности о том, как более точно сопоставлять классы.
Попробуйте:
check_call(['gzip', fullFilePath])
В зависимости от того, что вы делаете с данными этих файлов, ссылка Скирмантаса на http://docs.python.org/library/gzip.html также может быть полезным. Обратите внимание на примеры в нижней части страницы. Если вам не нужен доступ к данным или у вас нет данных уже в вашем коде Python, выполнение gzip может быть самым чистым способом сделать это, поэтому вам не нужно обрабатывать данные в Python.
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)
Используйте модуль 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
не существует. Если вам все еще нужно идти по этому пути, убедитесь, что файл существует в вашей системе, и вы используете абсолютный путь, а не относительный.
Есть модуль 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)
В формате 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)
документация по этому вопросу на самом деле безумно проста
Пример того, как читать сжатый файл:
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
Вот и вся документация. , ,
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)
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 для обсуждения других методов кодирования.