Загрузите, извлеките и прочитайте файл gzip на Python.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Загрузите, извлеките и прочитайте файл gzip на Python.

Сообщение Anonymous »

Я хотел бы загрузить, извлечь и перебрать текстовый файл на Python без необходимости создавать временные файлы.

По сути, это канал, но на Python< /p>

Код: Выделить всё

curl ftp://ftp.theseed.org/genomes/SEED/SEED.fasta.gz | gunzip | processing step
Вот мой код:

Код: Выделить всё

def main():
import urllib
import gzip

# Download SEED database
print 'Downloading SEED Database'
handle = urllib.urlopen('ftp://ftp.theseed.org/genomes/SEED/SEED.fasta.gz')

with open('SEED.fasta.gz', 'wb') as out:
while True:
data = handle.read(1024)
if len(data) == 0: break
out.write(data)

# Extract SEED database
handle = gzip.open('SEED.fasta.gz')
with open('SEED.fasta', 'w') as out:
for line in handle:
out.write(line)

# Filter SEED database
pass
Я не хочу использовать Process.Popen() или что-то еще, потому что я хочу, чтобы этот скрипт был независимым от платформы.

Проблема в том, что библиотека Gzip принимает в качестве аргументов только имена файлов, а не дескрипторы. Причина «конвейера» заключается в том, что этап загрузки использует только ~5% ЦП, и одновременное извлечение и обработка будут выполняться быстрее.



РЕДАКТИРОВАТЬ:
Это не сработает, потому что


"Из-за особенностей сжатия
gzip
GzipFile необходимо сохранить его
положение и перемещаться вперед и
назад по сжатому файлу.
Это не работает, когда «файл» представляет собой
поток байтов, поступающий с удаленного
> сервер; все, что вы можете с ним делать, это
получать байты по одному, а не перемещаться
вперед и назад по потоку данных
." - погрузитесь в Python


Вот почему я получаю ошибку

Код: Выделить всё

AttributeError: addinfourl instance has no attribute 'tell'
Итак, как же завить URL | застегнуть молнию | что работает?

Подробнее здесь: https://stackoverflow.com/questions/354 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»