使用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虚拟环境Virtualenv使用教程
May 18 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
python模块之re正则表达式详解
Feb 03 Python
python写一个md5解密器示例
Feb 23 Python
Python 将pdf转成图片的方法
Apr 23 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
python PIL/cv2/base64相互转换实例
Jan 09 Python
python序列类型种类详解
Feb 26 Python
Python根据字符串调用函数过程解析
Nov 05 Python
用Python将库打包发布到pypi
Apr 13 Python
python 用递归实现通用爬虫解析器
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
中国收音机工业发展史
2021/03/02 无线电
PHP个人网站架设连环讲(二)
2006/10/09 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
php中require和require_once的区别说明
2014/02/27 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python实现时间序列可视化的方法
2019/08/06 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
工程预算与管理应届生求职信
2013/10/06 职场文书
初中校园之声广播稿
2014/01/15 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
2014年党小组工作总结
2014/12/20 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL