要避免使用WinSCP下载子文件夹,可以使用以下代码示例中的解决方法:
import paramiko
def download_files(hostname, username, password, remote_path, local_path):
# 创建SSH客户端对象
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接SSH服务器
client.connect(hostname=hostname, username=username, password=password)
# 执行SSH命令,获取远程目录下的文件列表
cmd = 'ls -p ' + remote_path + ' | grep -v /'
stdin, stdout, stderr = client.exec_command(cmd)
file_list = stdout.read().decode().split('\n')
# 下载远程文件
sftp = client.open_sftp()
for file_name in file_list:
remote_file = remote_path + '/' + file_name
local_file = local_path + '/' + file_name
sftp.get(remote_file, local_file)
print('已下载文件:', file_name)
# 关闭连接
sftp.close()
client.close()
# 调用函数进行文件下载
hostname = '服务器IP地址'
username = '用户名'
password = '密码'
remote_path = '远程文件夹路径'
local_path = '本地保存路径'
download_files(hostname, username, password, remote_path, local_path)
这是一个使用Python的Paramiko库进行SSH连接和文件传输的示例。在代码中,我们首先连接到远程服务器,然后执行SSH命令获取远程目录下的文件列表。
接下来,我们使用SFTP协议进行文件传输,遍历远程文件列表,将每个文件下载到本地保存路径。
通过这种方式,我们可以避免下载子文件夹,只下载目录下的文件。