使用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求算数平方根和约数的方法汇总
Mar 09 Python
Python实现求数列和的方法示例
Jan 12 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
python图像处理入门(一)
Apr 04 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
python安装本地whl的实例步骤
Oct 12 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 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导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
Python实现求数列和的方法示例
2018/01/12 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
python函数的万能参数传参详解
2019/07/26 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
十岁生日家长答谢词
2014/01/17 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
机械系毕业生求职信
2014/05/28 职场文书
初婚初育证明范本
2014/11/24 职场文书
个人总结格式范文
2015/03/09 职场文书
怎样写好工作计划
2019/04/10 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis
深入理解go缓存库freecache的使用
2022/02/15 Golang
python神经网络ResNet50模型
2022/05/06 Python