使用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 mysqldb连接数据库
Mar 16 Python
python调用cmd复制文件代码分享
Dec 27 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
Python Subprocess模块原理及实例
Aug 26 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
Python sorted对list和dict排序
Jun 09 Python
Python OpenCV读取中文路径图像的方法
Jul 02 Python
PyQt QMainWindow的使用示例
Mar 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中养成7个面向对象的好习惯
2010/01/28 PHP
php 魔术方法详解
2014/11/11 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
JS 类型转换常见方法小结
2010/05/31 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
Python标准库inspect的具体使用方法
2017/12/06 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Python GUI编程完整示例
2019/04/04 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
flask项目集成swagger的方法
2020/12/09 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
师范生自荐信
2013/10/27 职场文书
生物技术研究生自荐信
2013/11/12 职场文书
说明书怎么写
2014/05/06 职场文书
2014年安全生产责任书
2014/07/22 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS