使用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端口扫描系统实现方法
Nov 19 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
python分数表示方式和写法
Jun 26 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
python删除文件、清空目录的实现方法
Sep 23 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
编写python程序的90条建议
Apr 14 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面向对象分析设计的61条军规小结
2010/07/17 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
php实现图片添加水印功能
2014/02/13 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Python如何获取文件路径/目录
2020/09/22 Python
家长会学生家长演讲稿
2013/12/29 职场文书
求职信写作要突出重点
2014/01/01 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
学风建设演讲稿
2014/09/12 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
浅谈克隆 JavaScript
2021/11/02 Javascript
Python学习之迭代器详解
2022/04/01 Python
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
一行Python命令实现批量加水印
2022/04/07 Python