【问题标题】:Download multiple files from SFTP server using python in a loop在循环中使用 python 从 SFTP 服务器下载多个文件
【发布时间】:2022-01-10 21:01:58
【问题描述】:

文件下载适用于单个文件,但是当我在 for 循环中运行它以一次下载多个文件时,下载第一个文件后它一直崩溃。我尝试了很多东西,但结果都是一样的,程序在第一次下载后停止,没有错误。

def store_files_name(fname):
    file_names.append(fname) 

def store_dir_name(dirname):
    dir_names.append(dirname)

def store_other_file_types(name):
    un_name.append(name)
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

conn = pysftp.Connection('', username='', password='', private_key=".ppk", cnopts=cnopts)
sftp.walktree("",store_files_name,store_dir_name,store_other_file_types,recurse=True)



for f in file_names:
    print(f)
    conn.get("/"+f)

【问题讨论】:

    标签: python for-loop download sftp pysftp


    【解决方案1】:

    众所周知,所有 pysftp 递归函数都实现得很差。它们尤其不适用于 Windows。他们对远程 SFTP 路径使用 os.sepos.path 函数,这是错误的,因为 SFTP 路径总是使用正斜杠。

    而且总的来说 p​​ysftp 似乎是一个废弃的项目。考虑直接使用 Paramiko (pysftp is just a thin wrapper around Paramiko)。

    有关迭代远程文件夹的有效 Paramiko 代码,请参阅:
    Python pysftp get_r from Linux works fine on Linux but not on Windows

    【讨论】:

    • 为什么要更新这个?
    最近更新 更多