[Errno 2] No such file问题解决方法

本文介绍了一种在使用Python实现SSH协议文件传输时遇到的[Errno2]Nosuchfile错误,并分享了解决方案。错误原因为文件路径不正确或文件不存在,特别是在使用证书登录时,需确保文件位于tmp目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python [Errno 2] No such file

问题产生
做课程设计要用python编写一个实现SSH协议文件传输功能的程序。实现SSH免密登陆(即证书登录)之后,传输文件报错:[Errno 2] No such file
可能的原因

  1. 文件路径出错,文件不存在。
  2. 文件名没有加上后缀

问题解决
但我确认我的路径正确,后来发现,在用ssh协议进行文件传输时,只能将tmp目录下的文件进行传输。所以我将文件转移到tmp下,然后成功了。
以下是部分代码

class UpLoad(object):
    private_key_path = 'the path where your private key locates in'
    key = rsakey.RSAKey.from_private_key_file(private_key_path)
    print(key)
    def __init__(self, host='your host IP', port=22, username='your username', key=key):
        self.host = host
        self.port = port
        self.username = username
        self.key = key
        self.__k = None
    def run(self):
        self.connect()
        pass
        self.close()
    def connect(self):
        transport = trans.Transport((self.host, self.port))
        transport.connect(username=self.username,pkey=self.key)
        self.__transport = transport
    def close(self):
        self.__transport.close()
    def upload(self, local_path, target_path):
        # make a connection
        sftp = Sftp.SFTPClient.from_transport(self.__transport)
        # download a file from the server in virtual device
        sftp.put(local_path, target_path)
        print(target_path[5:], "Successfully upload!")
def main():
    ssh = UpLoad()
    ssh.connect()
    ssh.upload('/tmp/filename.py', "/tmp/filename.py")
    ssh.close()
if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值