【问题标题】:Read GZIP text file from remote server over SFTP通过 SFTP 从远程服务器读取 GZIP 文本文件
【发布时间】:2023-12-13 16:59:01
【问题描述】:

我在远程服务器上有许多大型文本文件,我想在不以编程方式解压缩的情况下阅读它们

我具有从远程服务器读取非 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 user@host: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

【问题讨论】:

    标签: python gzip fabric


    【解决方案1】:

    然而,尚未测试,您可以将您获得的文件处理程序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
    

    【讨论】:

    • 有效,即使对于大型(gzip 压缩时为 626M)文本文件也是如此。谢谢
    最近更新 更多