使用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解释器理解Python中的字节码
Apr 01 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
详解Swift中属性的声明与作用
Jun 30 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
python机器学习之神经网络(二)
Dec 20 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
基于pip install django失败时的解决方法
Jun 12 Python
Python键盘输入转换为列表的实例
Jun 23 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
python 实用工具状态机transitions
Nov 21 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多用户读写文件冲突的解决办法
2013/11/06 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
js分页工具实例
2015/01/28 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
python sys.argv[]用法实例详解
2018/05/25 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
python实现画图工具
2020/08/27 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
介绍一下Make? 为什么使用make
2016/07/31 面试题
园林毕业生自我鉴定范文
2013/12/29 职场文书
初中生物教学反思
2014/01/10 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
教师个人师德总结
2015/02/06 职场文书