使用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 03 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
Python中修改字符串的四种方法
Nov 02 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
Python3常用内置方法代码实例
Nov 18 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
使用python turtle画高达
Jan 19 Python
python 递归相关知识总结
Mar 03 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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脚本的10个技巧(4)
2006/10/09 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
JS 事件绑定函数代码
2010/04/28 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
python实现FTP服务器服务的方法
2017/04/11 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
python实现计算图形面积
2021/02/22 Python
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
初中女生自我鉴定
2013/12/19 职场文书
我的大学生活职业生涯规划
2014/01/02 职场文书
旅游项目开发策划书
2014/01/18 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
个人先进事迹材料
2014/12/29 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
yolov5返回坐标的方法实例
2022/03/17 Python
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫