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
条目不是目录(看看它与其他目录的颜色有何不同?),它是您从远程服务器检索到的文件。
我尝试在两台服务器之间传输文件。 我用的是帕拉米科。有一个名为 "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
条目不是目录(看看它与其他目录的颜色有何不同?),它是您从远程服务器检索到的文件。