程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python之辦公自動化SFTP

編輯:Python

提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 前言
  • 一、sftp和ftp的區別是什麼?
  • 二、使用步驟
    • 1.程序結構
    • 2.配置文件
    • 3.讀入配置文件
    • 4.sftp_client.py
    • 5.email_client.py
    • 6.main.py
  • 總結


前言

提示:這裡可以添加本文要記錄的大概內容:

公司裡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 : [email protected]163.com
SMTP_USER_PWD : XXX
FROM_MAIL : [email protected].com
TO_MAIL : XXX.[email protected].com
CC_MAIL : XXX.[email protected].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)

總結

記錄點點滴滴


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved