首页 > 其他分享 >SFTP文件本地及远程创建,上传,下载,删除,获取脚本

SFTP文件本地及远程创建,上传,下载,删除,获取脚本

时间:2023-11-30 10:35:10浏览次数:55  
标签:远程 txt local self filename sftp SFTP 上传 route

关键参数:

sftp_route:远程路径
local_route:本地路径(windows需要r解析)
header:txt表头字段(列表方式)
data:txt内容信息(列表嵌套列表方式)
filename_success:是否创建success文件默认为false
filename:文件名称(无需带后缀默认为txt文件)

 

注意:

上传文件需要带文件名称

下载只需要到文件路径即可

import os
import time
import paramiko

class SftpLocal:
    """
    SFTP操作
    支持配置协议,主机,账号,密码
    支持生成文件
    支持下载
    支持删除
    支持上传
    """

    def __init__(self,
                 sftp_route: str,
                 local_route: str):
        """
        :param sftp_route: SFTP路径
        :param local_route: 本地路径
        """
        self.sftp_route = sftp_route
        self.local_route = local_route
        # SFTP配置协议登录信息
        self.protocol = 'sftp'  # SFTP协议
        self.host = '10.100.***.**'  # 服务器主机名或IP地址
        self.port = 9999  # SFTP服务器端口号,默认为22
        self.username = '******'  # 服务器用户名
        self.password = ''******''  # 服务器密码
        # 创建SSH客户端并连接到SFTP服务器
        self.ssh = paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.ssh.connect(self.host, self.port, self.username, self.password)
        # 创建SFTP对象
        self.sftp = self.ssh.open_sftp()

    def upload(self):
        """
        样例:
        local_route = '/path/to/local/file.txt'
        sftp_route = '/path/to/remote/file.txt'
        :param sftp_route: sftp路径
        :param local_route: 本地路径
        :return:
        """
        # 上传本地文件到指定路径
        self.sftp.put(self.local_route, self.sftp_route)
        return True

    def download(self):
        """
        :param sftp_route: sftp路径
        :param local_route: 本地路径
        :return:
        """
        files = self.sftp.listdir(self.sftp_route)
        for filename in files:
            remote_file = os.path.join(self.sftp_route, filename)
            local_file = os.path.join(self.local_route, filename)
            self.sftp.get(remote_file, local_file)
        return True

    def delete(self):
        """
        删除sftp路径下的文件
        :param sftp_route:
        :return:
        """
        self.sftp.remove(self.sftp_route)
        return True

    def write_txt(self, route: str, filename: str, header: list, data: list, filename_success: bool = False):
        """
        # 定义表头和数据
        header = ['Name', 'Age', 'Gender']
        data = [
            ['Alice', 25, 'Female'],
            ['Bob', 30, 'Male']
        ]
        :param route: 文件路径
        :param filename: 文件名称
        :param filename_success: 是否要生成一个success文件
        :param args: 随机表头参数和内容以及其他随机参数
        :return:
        """
        if not filename_success:
            # 打开文件并写入表头和数据
            with open(route + filename + ".txt", 'w') as f:
                # 写入表头
                f.write(','.join(header) + '\n')
                # 写入数据
                for row in data:
                    f.write(','.join(row) + '\n')
        else:
            # 打开文件并写入表头和数据
            with open(route + filename + ".txt", 'w') as f:
                # 写入表头
                f.write(','.join(header) + '\n')
                # 写入数据
                for row in data:
                    f.write(','.join(row) + '\n')
            self.create_txt_success(route + filename)
            return True

    def create_txt_success(self, filename: str):
        open(filename + ".txt" + ".success", "a")
        return True


# 调试
# 上传
# SftpLocals = SftpLocal(sftp_route='/****/marketing/7433800/20231129/123.txt',
# local_route=r'G:\pycharmDl\job\MarkeScriptTest\sftp_local_txt\123.txt')
# print(SftpLocals.upload())
# 下载
# SftpLocals = SftpLocal(sftp_route='/****/marketing/7433800/20231129/',
#     local_route = r'G:\pycharmDl\job\MarkeScriptTest\sftp_local_txt')
# print(SftpLocals.download())
# 创建
# SftpLocals = SftpLocal(sftp_route='/****/marketing/7433800/20231129/',
#     local_route=r'G:\pycharmDl\job\MarkeScriptTest\sftp_local_txt')
# local_route = r'G:\pycharmDl\job\MarkeScriptTest\sftp_local_txt'
# today = time.strftime('%Y%m%d', time.localtime(time.time()))
# header = ['custNum', 'cell']
# data = [['asdfqwert', '13112341234'], ['asdfqwert', '13112341234']]
# print(SftpLocals.write_txt(route=local_route,
#     filename=today,
#     header=header,
#     data=data,
#     filename_success=True))

 

标签:远程,txt,local,self,filename,sftp,SFTP,上传,route
From: https://www.cnblogs.com/wyj497022944/p/17866723.html

相关文章

  • Python | 将本地文件上传到远程服务器
    在Python中,可以使用paramiko库来通过SSH进行文件的传输。首先,你需要安装paramiko库,可以使用以下命令进行安装:pipinstallparamiko然后,你可以使用以下Python脚本进行文件传输:此脚本使用SFTP协议进行文件传输。在SFTP的上下文中,你可以使用put方法将本地文件上传到远程服务器。import......
  • vscode 文件上传快捷键 shift+alt+s (ftp专用)插件用的 ftp-sync
    vscode文件上传快捷键shift+alt+s(ftp专用)插件用的ftp-sync{"key":"shift+alt+s","command":"extension.ftpsyncuploadselected"}......
  • 本地Linux 服务器实现公网SFTP远程传输文件(小白教程)
    简单几步实现使用SFTP结合cpolar工具实现远程Linux服务器传输文件1.查看局域网IP地址检查Linux局域网IP地址,我们输入:ipaddress然后即可看到设备的局域网IP地址2.局域网测试连接我们打开连接工具,这里使用winSCP连接测试,协议选择SFTP,输入上面查看的ip地址,端口号默认......
  • Nexus上传Jar包
    日常开发中,会遇到将jar包上传到私服仓库,方便开发人员引用依赖。方式有两个,如果是自己开发的项目,可以在Idea中配置仓库的地址和账号密码等等,通过Maven的deploy发布到远程仓库;第二种是,直接在Web页面上传Jar包到仓库里,本文记录一下第二种方式的使用方法。1、2.X版本1.1、登录一般......
  • 配置树莓派系统(64位)_无网线_无外显_笔记本远程连接
    硬件:一个树莓派4B、一台笔记本电脑(以win10系统为例,做树莓派显示屏)1下载工具软件1.1下载树莓派镜像烧录器RaspberryPiImager。该软件是把RaspberryPiOS安装(烧录)到TD卡上的工具。树莓派官网链接。根据下载RaspberryPiImager的提示,点击DownloadforWindows。下......
  • odoo 上传与下载附件
    postman上传成功示例:路由地址:/web/binary/upload_attachment获取odoo的cookie和csrf_tokencsrf_token调用方法:request.csrf_token()cookie很难获取,建议重新写路由作者:那时一个人......
  • SpringMVC_2023_11_28_3 SpringMVC_进阶(文件的上传--idea的配置)
    SpringMVC_进阶(文件的上传--idea的配置)项目结构......
  • python - requests上传文件MultipartEncoder
    1.requests_toolbelt先安装requests_toolbeltpipinstallrequests_toolbelt上传实例importrequestsfromrequests_toolbeltimportMultipartEncoderupload_url='https://your/upload/url'payload={'file':('test.jpg',open(&#......
  • Vue3 + Express 实现大文件分片上传、断点续传、秒传
    前言在日常开发中,文件上传是常见的操作之一。文件上传技术使得用户可以方便地将本地文件上传到Web服务器上,这在许多场景下都是必需的,比如网盘上传、头像上传等。但是当需要上传比较大的文件的时候,容易碰到以下问题:上传时间比较久;中间一旦出错就需要重新上传;一般服务端会对......
  • SpringBoot 文件上传及回显
    文件上传/回显SpringBoot默认tomcat上传文件大小问题(默认大小不能超过1MB)/***文件上传**@paramfile*@throwsIOException*/@PostMapping("upload")@ApiOperation("文件上传")publicvoidupload(@RequestParam("file")P......