python批量下载文件-python 从远程批量下载文件到本地
需求:
1、从postgresql数据库中查出附件名称
2、从远程服务器下载对应的附件
用到的python模块paramiko、psycopg2。
paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行。
psycopg2是python的postgresql数据库接口,可以对数据库进行操作。
conndb.py文件代码功能是连接数据库,查询附件的名称,用于拼接地址。
import psycopg2
def conn_db():
# database,user,password,host,port分别对应要连接的PostgreSQL数据库的数据库名、数据库用户名、用户密码、主机、端口信息
conn = psycopg2.connect(database="h", user="oe", password="1234", host="10.18.xxx.xxx", port="5432")
cursor = conn.cursor()
# 执行查询命令
cursor.execute("select store_fname,datas_fname from contract_attachment where contract_interview_id in(select id from hr_re)")
result = cursor.fetchall()
print(result)
# cursor.close() #关闭游标
conn.close() #关闭连接
return result
download.py进行连接服务器和下载文件的操作
from conndb import conn_db
import os
import re
import logging
import paramiko
import base64
_logger = logging.getLogger(__name__)
PATH = '/hr/openerp8/openerp/'
LOCATION='file:///filestore'
dbname='h'
def full_path(path):
# location = 'file:filestore'
assert LOCATION.startswith('file:'), "Unhandled filestore location %s" % LOCATION
location = LOCATION[5:]
# sanitize location name and path
location = re.sub('[.]', '', location)
location = location.strip('/\')
path = re.sub('[.]', '', path)
path = path.strip('/\')
res_path =os.path.join(PATH, location, dbname, path)
return res_path.replace('\','/')
def data_get(data):
result = []
bin_size = False
for attach in data:
# f_path = None
if LOCATION and attach[0]:
f_path = full_path(attach[0])
result.append(f_path)
# os.remove(f_path)
return result
def RemoteScp(host_ip, host_port, host_username, host_password, remote_file, local_file):
scp = paramiko.Transport((host_ip, host_port))
scp.connect(username=host_username, password=host_password)
sftp = paramiko.SFTPClient.from_transport(scp)
for file in remote_file:
file_path,filename =os.path.split(file)
sftp.get(file, local_file+'/'+filename)
scp.close()
return ("success")
if __name__ == '__main__':
ip="10.18.xxx.xxx"
user="root"
passwd="1234"
host_port = 22
data = conn_db() #取文件名集合
all_file = data_get(data)
local_path = 'F:/ProjectTrain/download_file/att'
RemoteScp(ip, host_port, user, passwd, all_file, local_path)
python批量下载文件-python 从远程批量下载文件到本地相关推荐
- java拷贝远程服务器上文件,java拷贝远程服务器上文件
java拷贝远程服务器上文件 内容精选 换一换 在Windows模式下,调试功能暂不可用.为支持多交叉架构的调试场景,需要在安装MindStudio的服务器(UI Host)上安装gdb-multia ...
- 远程网络读取服务器文件是否存在,远程读取服务器文件是否存在
远程读取服务器文件是否存在 内容精选 换一换 使用vi编辑器打开"/etc/default/grub",按如下要求修改参数:GRUB_CMDLINE_LINUX参数为console ...
- 向服务器写入文件失败,向远程服务器写入文件
向远程服务器写入文件 内容精选 换一换 密钥对鉴权方式的Windows云服务器,使用私钥文件获取登录密码失败.出现获取密码失败一般原因是Cloudbase-init注入密码失败. Cloudbase- ...
- python 文件下载服务器异常_python 从远程服务器下载日志文件的程序
import os import sys import ftplib import socket ################################################### ...
- 怎么遍历服务器文件夹,遍历远程服务器某个文件夹下的文件
遍历远程文件夹下的文件,您可以考虑使用FTP的方式,具体的请参考下述代码: private string GetFileNames(string URI) { WebClient wClient = ...
- 使用极域电子教室远程批量处理
使用极域软件远程批处理 远程批量格式化学生机E盘,E盘原来是学生放作业的,清空它无所谓,将用来存放onekey.exe和winxp.gho文件 路径 C:\WINDOWS\system32\cmd.e ...
- shell从服务器复制文件夹,关于shell:如何使用scp将文件夹从远程复制到本地?...
如何使用scp将文件夹从远程复制到本地主机? 我使用ssh登录我的服务器.然后,我想把远程文件夹foo复制到本地/home/user/Desktop. 如何做到这一点? 操作的问题是,当ssh连接到远 ...
- 西门子1200PLC程序远程上下载,远程在线调试原来是使用了巨控GRM530远程模块
西门子1200PLC程序远程上下载,远程在线调试 概述:随着移动互联网的普及以及物联网的快速发展,工控企业往往会出现人手不足,人工成本不断增加,项目没有办法按时完成.这样会影响公司的业务发展.由此我建 ...
- 使用Git将本地文件提交到远程仓库
使用Git将本地文件提交到远程仓库 使用Git将本地文件提交到远程仓库 现在要将本地代码推到git远程仓库保存,可以提交和拉取操作 本地项目已经创建 git远程仓库已经建(github.gitee都行 ...
最新文章
- kafka权威指南_Kafka-分区、片段、偏移量
- jsp mysql驱动程序_JSP通过JDBC驱动MySQL数据库方法
- 2018.8.5 复习笔记
- 调试JavaScript/VB Script脚本程序(ASP篇)
- python装饰器函数执行后日志_Python装饰器记录日志、异常处理、函数添加,python,处理函数,功能...
- Android 呼吸灯流程分析
- 【转】宝贝,我要出嫁了……
- 【转】 SQL 2005 try catch
- css单行文本和多行文本溢出实现省略号显示
- 涂上你的脸! 如何创建自定义Photoshop笔刷
- 魔方还原算法学习笔记
- php odbc informix,odbc php informix 问题求助
- Redis搭建及使用
- 华为手机设置页面黑色_华为手机简单设置一下,来电直接显示对方照片视频,个性又炫酷...
- samba xp linux共享文件
- 编译并测试 android goldfish kernel x86
- 情不知何起,文章不知何起
- 如何使用万能地图下载器下载矢量路网
- 空间分析方法在计算机上的应用,第4章 GIS空间分析方法.pdf
- java中play方法的两个参数_如何避免在play2中到处传递参数?