需求:

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 从远程批量下载文件到本地相关推荐

  1. java拷贝远程服务器上文件,java拷贝远程服务器上文件

    java拷贝远程服务器上文件 内容精选 换一换 在Windows模式下,调试功能暂不可用.为支持多交叉架构的调试场景,需要在安装MindStudio的服务器(UI Host)上安装gdb-multia ...

  2. 远程网络读取服务器文件是否存在,远程读取服务器文件是否存在

    远程读取服务器文件是否存在 内容精选 换一换 使用vi编辑器打开"/etc/default/grub",按如下要求修改参数:GRUB_CMDLINE_LINUX参数为console ...

  3. 向服务器写入文件失败,向远程服务器写入文件

    向远程服务器写入文件 内容精选 换一换 密钥对鉴权方式的Windows云服务器,使用私钥文件获取登录密码失败.出现获取密码失败一般原因是Cloudbase-init注入密码失败. Cloudbase- ...

  4. python 文件下载服务器异常_python 从远程服务器下载日志文件的程序

    import os import sys import ftplib import socket ################################################### ...

  5. 怎么遍历服务器文件夹,遍历远程服务器某个文件夹下的文件

    遍历远程文件夹下的文件,您可以考虑使用FTP的方式,具体的请参考下述代码: private string GetFileNames(string URI) { WebClient wClient = ...

  6. 使用极域电子教室远程批量处理

    使用极域软件远程批处理 远程批量格式化学生机E盘,E盘原来是学生放作业的,清空它无所谓,将用来存放onekey.exe和winxp.gho文件 路径 C:\WINDOWS\system32\cmd.e ...

  7. shell从服务器复制文件夹,关于shell:如何使用scp将文件夹从远程复制到本地?...

    如何使用scp将文件夹从远程复制到本地主机? 我使用ssh登录我的服务器.然后,我想把远程文件夹foo复制到本地/home/user/Desktop. 如何做到这一点? 操作的问题是,当ssh连接到远 ...

  8. 西门子1200PLC程序远程上下载,远程在线调试原来是使用了巨控GRM530远程模块

    西门子1200PLC程序远程上下载,远程在线调试 概述:随着移动互联网的普及以及物联网的快速发展,工控企业往往会出现人手不足,人工成本不断增加,项目没有办法按时完成.这样会影响公司的业务发展.由此我建 ...

  9. 使用Git将本地文件提交到远程仓库

    使用Git将本地文件提交到远程仓库 使用Git将本地文件提交到远程仓库 现在要将本地代码推到git远程仓库保存,可以提交和拉取操作 本地项目已经创建 git远程仓库已经建(github.gitee都行 ...

最新文章

  1. kafka权威指南_Kafka-分区、片段、偏移量
  2. jsp mysql驱动程序_JSP通过JDBC驱动MySQL数据库方法
  3. 2018.8.5 复习笔记
  4. 调试JavaScript/VB Script脚本程序(ASP篇)
  5. python装饰器函数执行后日志_Python装饰器记录日志、异常处理、函数添加,python,处理函数,功能...
  6. Android 呼吸灯流程分析
  7. 【转】宝贝,我要出嫁了……
  8. 【转】 SQL 2005 try catch
  9. css单行文本和多行文本溢出实现省略号显示
  10. 涂上你的脸! 如何创建自定义Photoshop笔刷
  11. 魔方还原算法学习笔记
  12. php odbc informix,odbc php informix 问题求助
  13. Redis搭建及使用
  14. 华为手机设置页面黑色_华为手机简单设置一下,来电直接显示对方照片视频,个性又炫酷...
  15. samba xp linux共享文件
  16. 编译并测试 android goldfish kernel x86
  17. 情不知何起,文章不知何起
  18. 如何使用万能地图下载器下载矢量路网
  19. 空间分析方法在计算机上的应用,第4章 GIS空间分析方法.pdf
  20. java中play方法的两个参数_如何避免在play2中到处传递参数?

热门文章

  1. Sqlite表的结构修改
  2. 为UINavigationBar添加自定义背景
  3. GC分析工具使用-gceacy分析堆栈
  4. Matlab 线性规划问题模型代码
  5. 优化程序性能的策略汇总
  6. anaconda的scikit-learn报错It seems that scikit-learn has not been built
  7. 【python练习】基于socket的FTP程序 v1.1.0(支持多用户)
  8. STL源码剖析---红黑树原理详解
  9. java基础学习,一些零散的笔记之内部类
  10. 多返回值函数的编写方法