首页 > 解决方案 > 使用 Python Paramiko over ssh/sftp 将文件复制到具有不同文件名的服务器

问题描述

我有c:\file_a.txt我想复制到的/home/the_user/file_b.txt. 如果远程文件已经存在,则替换它,如果不存在,则创建它。

这是我的代码:

import json
import paramiko
from dotenv import load_dotenv
from os import getenv
from os.path import join, dirname, expanduser

if __name__ == "__main__":
    load_dotenv(join(dirname(__file__), ".env"))
    ssh = paramiko.SSHClient()
    ssh.load_host_keys(expanduser(join("~", ".ssh", "known_hosts")))
    ssh.connect(getenv("SSH_SERVER"), username=getenv("SSH_USER"), \
       password=getenv("SSH_PWD"), key_filename=getenv("SSH_KEY"))
    sftp = ssh.open_sftp()
    sftp.put("c:\file_a.txt", "/home/the_user/")
    # my understanding is putting a file to a folder sets the working directory to that folder
    sftp.rename("file_a.txt", "file_b.txt")
    sftp.remove("file_a.txt")
    sftp.close()
    ssh.close()

但是我Failure在重命名时遇到错误。感觉就像我遗漏了一些明显的东西,并希望得到任何指示。

如何使用 ssh/sftp/scp 中的paramiko库将本地文件复制到具有不同文件名的远程文件Python

标签: pythonsftpparamikofile-transferfile-copying

解决方案


所以直接将文件上传到新名称:

sftp.put("c:\file_a.txt", "/home/the_user/file_b.txt")

推荐阅读