gpt4 book ai didi

python - Python中通过SFTP(Paramiko)上传文件给出IOError : Failure

转载 作者:行者123 更新时间:2023-12-01 09:34:25 32 4
gpt4 key购买 nike

目的:我正在尝试通过 Python 中的 Paramiko 使用 SFTP 在服务器电脑上上传文件。

我所做的:为了测试该功能,我使用我的本地主机 (127.0.0.1) IP。为了实现这一目标,我在 Stack Overflow 建议的帮助下创建了以下代码。

问题:当我运行此代码并输入文件名时,我收到“IOError:失败”,尽管处理了该错误。这是错误的快照:

enter image description here

import paramiko as pk
import os

userName = "sk"
ip = "127.0.0.1"
pwd = "1234"
client=""

try:
client = pk.SSHClient()
client.set_missing_host_key_policy(pk.AutoAddPolicy())
client.connect(hostname=ip, port=22, username=userName, password=pwd)

print '\nConnection Successful!'

# This exception takes care of Authentication error& exceptions
except pk.AuthenticationException:
print 'ERROR : Authentication failed because of irrelevant details!'

# This exception will take care of the rest of the error& exceptions
except:
print 'ERROR : Could not connect to %s.'%ip

local_path = '/home/sk'
remote_path = '/home/%s/Desktop'%userName

#File Upload
file_name = raw_input('Enter the name of the file to upload :')
local_path = os.path.join(local_path, file_name)

ftp_client = client.open_sftp()
try:
ftp_client.chdir(remote_path) #Test if remote path exists
except IOError:
ftp_client.mkdir(remote_path) #Create remote path
ftp_client.chdir(remote_path)

ftp_client.put(local_path, '.') #At this point, you are in remote_path in either case
ftp_client.close()

client.close()

您能指出问题出在哪里以及解决方法吗?提前致谢!

最佳答案

SFTPClient.put 的第二个参数(remotepath) 是文件的路径,而不是文件夹的路径。

因此请使用file_name而不是'.':

ftp_client.put(local_path, file_name)

...假设您已经在 remote_path 中,正如您之前调用 .chdir 一样。

<小时/>

为了避免需要 .chdir,您可以使用绝对路径:

ftp_client.put(local_path, remote_path + '/' + file_name) 

关于python - Python中通过SFTP(Paramiko)上传文件给出IOError : Failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49663947/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com