Paramiko through error while transferring file to a directory IsADirectoryError: [Errno 21] Is a directory: '/home/mmoradi2/data/'

Paramiko through error while transferring file to a directory IsADirectoryError: [Errno 21] Is a directory: '/home/mmoradi2/data/'

我尝试在两台服务器之间传输文件。 我用的是帕拉米科。有一个名为 "data" 的目录,但上面写着:

IsADirectoryError: [Errno 21] Is a directory: '/home/mmoradi2/data/'

我不知道是什么问题。这是我的代码:

import paramiko

s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname='****8', username='****',password='****',port=22)
sftp = s.open_sftp()


list_files_share_drive = sftp.listdir('./')

# Looping through the files and transferring them to the data folder and importing them

the_file = list_files_share_drive[0]

sftp.get( '/home/sftpwis/'+ the_file  ,   '/home/mmoradi2/data/')

我将目标 ('/home/mmoradi2/data/') 更改为: '/home/mmoradi2/data' 和 '/home/mmoradi2'

它没有用,我有同样的错误。我将其更改为“/home/mmoradi2/Data/”。然后我没有错误但是有一个新的目录我不能 cd 到它!!! (打不开)

我该如何解决这个问题?

SFTPClient.get() 方法的第二个参数是应该放置文件的本地路径。这不是它应该放入的目录,而是它应该复制到的实际文件名。解决方法只是将您的行更改为

sftp.get( '/home/sftpwis/'+ the_file  ,   '/home/mmoradi2/data/' + the_file)

报错信息还算合理——说你给的路径是一个目录;这意味着它需要一个 而不是 目录的路径,即,它是一个常规文件名。

您的 Data 条目不是目录(看看它与其他目录的颜色有何不同?),它是您从远程服务器检索到的文件。