使用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 装饰器功能以及函数参数使用介绍
Jan 27 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Python random库使用方法及异常处理方案
Mar 02 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
简单介绍Python的第三方库yaml
Jun 18 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
jquery操作select大全
2014/04/25 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python 专题一 函数的基础知识
2017/03/16 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
机器学习python实战之决策树
2017/11/01 Python
理论讲解python多进程并发编程
2018/02/09 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
Python脚本调试工具安装过程
2021/01/11 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
合作意向协议书
2015/01/29 职场文书
幼儿教师辞职信
2015/02/27 职场文书
工作简报格式范文
2015/07/21 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
安全生产学习心得体会
2016/01/18 职场文书
基于python实现银行管理系统
2021/04/20 Python
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技