使用python实现正则匹配检索远端FTP目录下的文件

 更新时间:2015年03月25日 14:38:06   作者:阿库纳玛塔塔  
这篇文章主要介绍了使用python实现正则匹配检索远端FTP目录下的文件的方法,非常的简单实用,需要的小伙伴参考下

遇到一个问题,需要正则匹配远端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计算库numpy进行方差/标准方差/样本标准方差/协方差的计算

    Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算

    今天小编就为大家分享一篇关于Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 一文详解loss.item()用法和注意事项

    一文详解loss.item()用法和注意事项

    loss.item()是PyTorch中的一种方法,用于计算损失函数的值,下面这篇文章主要给大家介绍了关于loss.item()用法和注意事项的相关资料,需要的朋友可以参考下
    2023-06-06
  • django执行原生SQL查询的实现

    django执行原生SQL查询的实现

    本文主要介绍了django执行原生SQL查询的实现,主要有两种方法实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 20招让你的Python飞起来!

    20招让你的Python飞起来!

    20招让你的 Python飞起来!这篇文章主要为大家详细介绍了Python性能优化的20条建议,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Python海象运算符的用法教程

    Python海象运算符的用法教程

    Python 海象运算符是在 PEP 572 中提出,并在 Python3.8 版本并入和发布。本文就来为大家详细讲讲Python海象运算符的用法,感兴趣的可以了解一下
    2022-07-07
  • Python爬虫eval实现看漫画漫画柜mhgui实战分析

    Python爬虫eval实现看漫画漫画柜mhgui实战分析

    这篇文章主要为大家介绍了Python爬虫eval实现看漫画漫画柜mhgui实战分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • python实现控制台输出颜色

    python实现控制台输出颜色

    这篇文章主要为大家详细介绍了python实现控制台输出颜色,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Pytorch 如何训练网络时调整学习率

    Pytorch 如何训练网络时调整学习率

    这篇文章主要介绍了Pytorch 如何训练网络时调整学习率的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Flask缓存静态文件的具体方法

    Flask缓存静态文件的具体方法

    在本篇文章中小编给大家整理的是一篇关于Flask缓存静态文件的具体方法,有需要的朋友们可以参考下。
    2020-08-08
  • 使用Python 正则匹配两个特定字符之间的字符方法

    使用Python 正则匹配两个特定字符之间的字符方法

    今天小编就为大家分享一篇使用Python 正则匹配两个特定字符之间的字符方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论