使用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 相关文章推荐
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
python利用socketserver实现并发套接字功能
Jan 26 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Python基于mysql实现学生管理系统
Feb 21 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
python numpy数组中的复制知识解析
Feb 03 Python
Python如何在DataFrame增加数值
Feb 14 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
Python importlib动态导入模块实现代码
Apr 16 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 Token(令牌)设计
2008/03/15 PHP
PHP 面向对象实现代码
2009/11/11 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
django url到views参数传递的实例
2019/07/19 Python
解决Python3下map函数的显示问题
2019/12/04 Python
Python必须了解的35个关键词
2020/07/16 Python
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
人力资源管理专业求职信
2014/07/23 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
生产现场禁烟通知
2015/04/23 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书