使用python脚本从远程服务器上下载文件到windows本地,报错:PermissionError: [Errno 13] Permission denied

主要是使用paramiko库来实现该功能。
1、工作目录如下图所示:
在这里插入图片描述2、实现的功能是:把服务器上文件‘remote_path’下载到本地的工作目录下,本地的工作目录是‘F:/Program Files/Pycharm Projects/get_table_name’,想要在这个目录下再新建一个文件夹localFiles存储下载过来的文件8975817312076800_content.csv。代码如下所示:

import os
import paramiko

def remote_scp(host_ip, remote_path, local_path, username):
    port = 22
    t = paramiko.Transport((host_ip, port))  # 设置SSH连接的远程主机地址和端口
    key = paramiko.RSAKey.from_private_key_file(r'C:/Users/weizai/Desktop/pem/23user01key.pem') # 设置登录的pem文件地址
    t.connect(username=username, pkey=key) # 以用户名+pem的方式连接
    sftp = paramiko.SFTPClient.from_transport(t) # 从打开的`.Transport`创建一个SFTP客户端通道。
    sftp.get(remotepath=remote_path, localpath=local_path) #将远程文件(``remotepath``)从SFTP服务器复制到本地(``localpath``)。
    t.close() # 关闭此会话以及与其关联的所有打开的通道

host_ip = '192.168.1.23'
remote_path = '/data/user02/project/new_get_table_v3/files/8975817312076800_content.csv'
local_files_path = 'F:/Program Files/Pycharm Projects/get_table_name/localFiles'
if not os.path.exists(local_files_path):
    os.makedirs(local_files_path)
username = 'user01'
local_path = local_files_path + '/' + '8975817312076800_content.csv'
remote_scp(host_ip=host_ip, remote_path=remote_path, local_path=local_path, username=username)

3、运行结果如下图所示:
在这里插入图片描述
4、有时候一不小心会犯下图所示这种错误,没有先创建一个文件夹存储要下载的文件,而是直接一步创建“文件夹/文件”的这种形式,
例如:想直接在本地的工作目录下创建
'./localFiles/8975817312076800_content.csv’这种形式
在这里插入图片描述
5、这时候就会报错PermissionError: [Errno 13] Permission denied:
在这里插入图片描述
6、解决的方式就是:首先在本地创建“./localFiles”文件夹(“./”指代当前脚本的同级路径),然后再将服务器上的文件下载(重写)到
“./localFiles/8975817312076800_content.csv”中,正确的代码请参考步骤2中展示的代码,这个顺序有时候一不小心就容易弄错。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值