2015-11-13 3 views
1

У меня есть много больших текстовых файлов на удаленном сервере, на котором я хотел бы читать без разархивации программнаRead GZIP с удаленного сервера через SFTP

У меня есть функциональность работает для чтения не-GZIP текстового файла с удаленным сервер, а также чтение текстового файла GZIP локально. Я не знаю, как объединить два или, если это возможно

Ниже приведены индивидуально рабочие части кода:

from contextlib import closing 
from fabric.network import connect 
from fabric import state 
import gzip 

# This successfully reads a non-GZIP text file from [email protected]:filePath 
with closing(connect("user", "host", "port", None)) as ssh: 
    with closing(ssh.open_sftp()) as sftp: 
     with closing(sftp.open("filePath")) as f: 
      for line in f: 
       print line 

# This successfully reads a GZIP text file locally 
with gzip.open("fileName", "r") as f: 
    for line in f: 
     print line 

ответ

2

не проверял, однако, вы можете передать обработчик файлов f вы получаете от в gzip.GzipFile следующим образом:

with closing(connect("user", "host", "port", None)) as ssh: 
    with closing(ssh.open_sftp()) as sftp: 
     with closing(sftp.open("filePath")) as f: 
      with gzip.GzipFile(mode='rb', fileobj=f) as fin: 
       for line in fin: 
        print line 
+0

Работы, даже для больших (626M при gzipped) текстовых файлов. спасибо – asimes

Смежные вопросы