【问题标题】:Download large files using pysftp使用 pysftp 下载大文件
【发布时间】:2020-05-16 06:00:18
【问题描述】:

我有一个文件>500 MB 要使用sftp 连接下载,我尝试使用pysptp 并收到错误SSHException: Server connection dropped:

import pysftp
import sys
myHostname = "dbfiles.xyz.org"
myUsername = "XXXX"
myPassword = "YYYY"
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword,cnopts=cnopts) as sftp:
    print("Connection succesfully stablished ... ")
    localFilePath = 'c:/....'
    remoteFilePath = sftp.listdir('/folder/')
    for filename in remoteFilePath:
        if 'string_to_match' in filename:
            local_path =  localFilePath + filename
            print (filename)
            print (local_path)
            sftp.get("folder/" + filename, local_path)

在下载 18MB 的文件后得到SSHException: Server connection dropped: EOF error。有什么方法可以限制下载的数据量,或者可以延迟这个get 过程以获得完整文件,我尝试了几种方法,但由于文件太大,无法下载完整文件。任何帮助表示赞赏。

【问题讨论】:

  • 您可以使用与您的 Python 代码在同一台机器上运行的任何 SFTP 客户端下载完整的文件吗?
  • 是的,我可以使用 filezille 下载
  • 你能从 FileZilla 和你的 Python 代码中发布一个日志文件吗?
  • @Harry_pb,你能告诉我你是怎么解决这个问题的吗,我也面临同样的问题,我的文件大小超过 1.2 GB,下载不超过 18MB

标签: python python-3.x sftp pysftp


【解决方案1】:

转到 stfp_file.py 中的 Paramiko 库并将 MAX_REQUEST_SIZE 更改为 1024。它对我有用。你可以在这里找到包: /home//.local/lib/python3.8/site-packages/paramiko/sftp_file.py

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 2019-03-14
    • 2020-06-11
    • 2018-01-21
    • 2020-03-16
    • 2011-07-14
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多