Python办公自动化SFTP详解
作者:panda_225400 发布时间:2021-10-11 13:04:27
前言
提示:这里可以添加本文要记录的大概内容:
公司里B2B是通过WinSCP里SFTP与客户进行数据传输,WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端,本想偷个懒拿同事的WinSCP的SFTP代码给总部传数据,同事给的代码调用WinSCP就是执行不成功,不知道WinSCP是否有新旧版本兼容,还是必须两边的操作系统都需要是Windows环境呢,最后只能硬着头皮查资料重新写了一个。
提示:以下是本篇文章正文内容,下面案例可供参考
一、sftp和ftp的区别是什么?
sftp和ftp的区别在安全通道,使用的协议,链接方式,安全性等方面都有不同.
1、sftp是一种安全的文件传输协议,一种通过网络传输文件的安全方法。它确保使用私有和安全的数据流来安全地传输数据。
2、ftp是文件传输协议。ftp 不提供任何安全通道来在主机之间传输文件。在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到ftp服务器上,其他人通过FTP客户端程序来下载所需要的文件。
sftp和ftp不同的具体表现:
ftp不提供任何安全通道来在主机之间传输文件;而sftp协议提供了一个安全通道,用于在网络上的主机之间传输文件。ftp使用TCP / IP协议。而,sftp是SSH协议的一部分,它是一种远程登录信息。ftp使用TCP端口21上的控制连接建立连接。而,sftp是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。ftp密码和数据以纯文本格式发送,大多数情况下是不加密的,安全性不高。而,sftp会在发送之前加密数据,二进制的形式传递,是无法“按原样”阅读的,安全性较高。
具体请去网上查看
二、使用步骤
1.程序结构
2.配置文件
config.yaml代码如下(示例):
CONFIG: &config
# 日志配置文件路径
LOGGING_CONFIG_PATH: ./Configs/logging.yaml
# 日志文件存放位置
LOGGING_PATH: ./logs
# SFTP
FTP_HOST: ***.*****.com
FTP_PORT: 22
FTP_USER_NAME : XXXXXXXXX
FTP_PASSWORD : XXXXXXXXX
HOME_DIR : /
REMOTE_PATH : /XXX/
LOCAL_DIR : D:\Web\HR
LOCAL_DESDIR : D:\Web\HR\TMP
# 邮件
SMTP_SERVER : CNMAIL
SMTP_USER_NAME : XXX@163.com
SMTP_USER_PWD : XXX
FROM_MAIL : isadmin@XXX.com
TO_MAIL : XXX.zhang@XXX.com
CC_MAIL : XXX.zhang@XXX.com
DEVELOPMENT : &development
<<: *config # 继承config,没有重新定义的变量,使用config变量值
DEBUG: True
PRODUCTION : &production
<<: *config # 继承config,没有重新定义的变量,使用config变量值
DEBUG: True
3.读入配置文件
代码如下(示例):
def create_app(config_name=None, config_path=None):
app = Flask(__name__)
# 读取配置文件
if not config_path:
pwd = os.getcwd()
config_path = os.path.join(pwd, 'Configs/config.yaml')
if not config_name:
config_name = 'PRODUCTION'
conf = read_yaml(config_name, config_path)
app.config.update(conf)
if not os.path.exists(app.config['LOGGING_PATH']):
# 日志文件目录
os.mkdir(app.config['LOGGING_PATH'])
# 日志设置
with open(app.config['LOGGING_CONFIG_PATH'], 'r', encoding='utf-8') as f:
dict_conf = yaml.safe_load(f.read())
logging.config.dictConfig(dict_conf) # 载入日志配置
return app
4.sftp_client.py
5.email_client.py
6.main.py
代码如下(示例):
if __name__ == "__main__":
remotePath = ""
localPath = ""
runSFTP(remotePath, localPath)
来源:https://blog.csdn.net/panda_225400/article/details/126088460


猜你喜欢
- enumerate首先介绍的是enumerate函数。在我们日常编程的过程当中,经常会遇到一个问题。在C语言以及一些古老的语言当中是没有迭代
- 前言本文主要给大家介绍了关于python计算时间差(返回天数)的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧方法
- 前言在php开发过程中,获取文件扩展名是非常常见的需求。比如我们在上传文件的时候,首先需要判断文件类型是否为我们允许上传的类型。这个时候就需
- 本文实例为大家分享了JavaScript实现烟花特效的具体代码,供大家参考,具体内容如下本特效使用面向对象编程分析OOA点击触发事件烟花运动
- 最近用layer ui上传文件遇到了一个问题,我想在上传文件之前把data-id传入后台,layer文档找了一下也没有找到类似的说明,经过一
- 这篇文章主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- python基础pandas的drop()用法做数据处理得时候用到了pandas,体验不错,记录如下:import pandas as pd
- 学习前言我发现不仅有很多的Keras模型,还有很多的PyTorch模型,还是学学Pytorch吧,我也想了解以下tensor到底是个啥。Py
- 几天前,想把上个月校园招聘的餐旅费报销一下。结果在公司内网的报销系统折腾了三个半小时才搞定。看看自己报销的金额:802块。觉得挺无奈,花了三
- 说明1、在使用之前需要在settings中打开。2、pipeline在settings中键表示位置(即pipeline在项目中的位置可以自定
- 前言scikit-learn是Python中最流行的机器学习库之一,它提供了各种各样的机器学习算法和工具,包括分类、回归、聚类、降维等。sc
- 这篇文章我们来讲讲如何在python使用bs4模块返回值中正确使用find和find_all来取值。我们先来看看find函数在两种场景使用:
- 本文实例总结了go语言中使用timer的常用方式。分享给大家供大家参考。具体分析如下:下面三段代码(A,b,C)的功能都是在5分钟后执行指定
- 本文实例讲述了MySQL连接查询。分享给大家供大家参考,具体如下:创建表suppliers:CREATE TABLE suppliers(
- 一、数据库是什么?数据库是管理数据的一类软件。对数据的管理体现在两个方面,第一是描述数据,即一条数据如何表示,第二是组织数据,即很多数据如何
- 啥也不说了,还是看代码吧! [root@yyjk DATABASE]# cat DBI.py# -*- coding: utf-8 -*-
- 首先先说一下思路:1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下
- 1 用法说明str.format() 方法通过字符串中的花括号 {} 来识别替换字段从而完成字符串的格式化。1.1 写法简单字段名有三种写法
- 一、前期配置 1. 加入依赖<dependency> <groupId>co
- 对dataframe绘图并保存:ax = df.plot() fig = ax.get_figure()fig.savefig('f