使用python实现正则匹配检索远端FTP目录下的文件


Posted in Python onMarch 25, 2015

遇到一个问题,需要正则匹配远端FTP目录下的文件,如果使用ftp客户端可以通过命令行很容易的做到这一点,但是暂时没有一个工具支持这样的需求,于是通过python对FTP的支持和对正则表达式的支持,写了这么一个简单的工具,用于使用正则表达式来匹配远端目录的文件。

代码如下

# coding=utf-8
#########################################################################
# File Name: reg_url.py
# Author: WangWeilong
# Company: Baidu
#########################################################################

import re
import sys
import os
from ftplib import FTP

dhccmd = "http://xxx/api/submit"

class DHC_FTP():
 def __init__(self, hostname, username="", passwd=""):
  self.hostname = hostname
  try:
   self.ftp = FTP(self.hostname)
  except:
   print "hostname error!"
   exit(-1)
  self.username = username
  self.passwd = passwd
  self.filelist = []
  self.reg_pattern = ""

 def getftpfilelist(self, path):
  self.ftp.login(self.username, self.passwd)
  self.ftp.cwd(path)
  self.filelist = self.ftp.nlst()

 def matchnames(self, regpattern):
  pattern = re.compile(regpattern)
  matchedfiles = []
  for file in self.filelist:
   match = pattern.search(file)
   if match:
    matchedfiles.append(match.string)
  return matchedfiles



if __name__ == "__main__":
 if len(sys.argv) != 4:
  print 'usage:python reg_url.py $ftpurldir $regular'
 else:
  #解析ftpurl字符串
  head = sys.argv[1].split("@")[1].split("/")[0]
  username = sys.argv[1].split("//")[1].split(":")[0]
  passwd = sys.argv[1].split("//")[1].split(":")[1].split("@")[0]
  pathdir = sys.argv[1].split(head)[1]

  dhc_ftp = DHC_FTP(head, username, passwd)
  dhc_ftp.getftpfilelist("./" + pathdir)

  #获取正则表达式
  regpattern = r'%s' % sys.argv[2]

  matchedfiles = dhc_ftp.matchnames(regpattern)
  for files in matchedfiles:
   ftpname = sys.argv[1] + "/" + files
   print ftpname

通过输入想要的检索的远端目录地址和想要用来匹配的正则表达式,就能获取到远端的文件了,至于用这些文件来干嘛,那就是需求问题了。

以上所述就是本文的全部内容了,希望大家能够喜欢。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

Python 相关文章推荐
python用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python实时获取cmd的输出
Dec 13 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
Python深入06——python的内存管理详解
Dec 07 Python
Python中单、双下划线的区别总结
Dec 01 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
python计算二维矩形IOU实例
Jan 18 Python
Python pandas如何向excel添加数据
May 22 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 #Python
python概率计算器实例分析
Mar 25 #Python
python编写的最短路径算法
Mar 25 #Python
python实现挑选出来100以内的质数
Mar 24 #Python
Python 的 Socket 编程
Mar 24 #Python
python获取标准北京时间的方法
Mar 24 #Python
python实现定时同步本机与北京时间的方法
Mar 24 #Python
You might like
简单的PHP图片上传程序
2008/03/27 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP反射实际应用示例
2019/04/03 PHP
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
Python import自定义模块方法
2015/02/12 Python
Python实现数据库编程方法详解
2015/06/09 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python3下pygame如何实现显示中文
2020/01/11 Python
pytorch 修改预训练model实例
2020/01/18 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
python 实现单例模式的5种方法
2020/09/23 Python
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
Delphi软件工程师试题
2013/01/29 面试题
班组拓展活动方案
2014/08/14 职场文书
文案策划岗位职责
2015/02/11 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server