使用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 Tkinter基础控件用法
Sep 03 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
Python实现约瑟夫环问题的方法
May 03 Python
Python实现XML文件解析的示例代码
Feb 05 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
Python集合的基础操作
Nov 01 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反弹shell实现代码
2009/04/22 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
《狮子和兔子》教学反思
2014/03/02 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
加强作风建设工作总结
2014/10/23 职场文书
2014年妇女工作总结
2014/12/06 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
网络销售员岗位职责
2015/04/11 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS