2

我需要递归列出包含很多子目录(超过 16,000 个)的目录的内容。

我目前正在使用Paramiko 的 SFTP 客户端,它不提供任何递归listdir功能。所以我必须首先listdir在父文件夹上运行,然后再listdir为每个(许多,许多)子目录运行。运行时间太长。

有没有办法listdir在单个 SFTP 调用中运行递归?我不限于 Paramiko 包,它只是我们目前正在使用的包。

由于当地的行政限制,我无法使用 Paramiko ssh.exec_command('ls -R <path>')(它只会返回一条错误消息)。

4

1 回答 1

2

所以我必须首先listdir在父文件夹上运行,然后再listdir为每个(许多,许多)子目录运行。

这才是正确的做法。

有关实现的示例,请参阅Linux 中的
Python pysftp get_r 在 Linux 上运行良好,但在 Windows 上运行良好


有没有办法listdir在单个 SFTP 调用中运行递归?我不限于 Paramiko 包,它只是我们目前正在使用的包。

不,这不是 Paramiko 的限制。SFTP 协议本身没有任何方法来检索递归列表。并不是说其他​​类似的协议(如 FTP)通常具有这样的功能,所以这并不是一个真正的限制

于 2018-01-22T07:41:43.737 回答