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

版权声明:Copyright 2019 by patricia https://blog.csdn.net/weixin_42395901/article/details/87931066

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()

猜你喜欢

转载自blog.csdn.net/weixin_42395901/article/details/87931066