# -*- coding: utf-8 -*-
import tools
import paramiko
from cStringIO import StringIO
import logging
_logger = logging.getLogger(__name__)
def get_conf_parser():
"""
讀取SFTP配置參數
:return:
"""
config = tools.config
host = config.get("host", None)
port = config.get("port", None)
user = config.get("user", None)
pwd = config.get("pwd", None)
download_path = config.get("download_path", None)
backup_path = config.get("backup_path", None)
return host, port, user, pwd, download_path, backup_path
def connect_sftp(host, port, username, password):
"""
連接SFTP
:param host:
:param port:
:param username:
:param password:
:return:
"""
try:
sf = paramiko.Transport((host, int(port)))
sf.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(sf)
_logger.info("成功連接SFTP:%s", host)
return sftp
except Exception as e:
_logger.info(e)
return False
def put_sftp_file(sftp, f1, backup_path):
"""
上傳數據到備份文件
:param f1:數據對象
:param backup_path:
:return:
"""
try:
sftp.putfo(f1, backup_path)
_logger.info("成功備份SFTP文件:%s", backup_path)
return True
except Exception as e:
_logger.info(e)
return False
def remove_sftp_file(sftp, download_path):
"""
刪除已被讀取的數據文件
:param backup_path:
:return:
"""
try:
sftp.remove(download_path)
_logger.info("成功刪除SFTP文件:%s", download_path)
return True
except Exception as e:
_logger.info(e)
return False
def get_filename(sftp, download_path):
"""
讀取文件目錄下所有文件名
:return:
"""
try:
return sftp.listdir(download_path)
except Exception as e:
_logger.info(e)
return False
def read_sftp_file(sftp, download_file, backup_file):
f = []
try:
f1 = StringIO()
sftp.getfo(download_file, f1)
f1.seek(0)
put_sftp_file(sftp, f1, backup_file)
f1.seek(0)
_logger.info("成功讀取SFTP文件: %s", download_file)
while True:
line = f1.readline()
if line:
f.append(line)
else:
break
except Exception, e:
_logger.info(e)
return f
python 利用SFTP 讀取 、備份、刪除txt文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.