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

 这篇文章主要介绍了使用python实现正则匹配检索远端FTP目录下的文件的方法,非常的简单实用,需要的小伙伴参考下

 
 

遇到一个问题,需要正则匹配远端FTP目录下的文件,如果使用ftp客户端可以通过命令行很容易的做到这一点,但是暂时没有一个工具支持这样的需求,于是通过python对FTP的支持和对正则表达式的支持,写了这么一个简单的工具,用于使用正则表达式来匹配远端目录的文件。

代码如下

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# 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

通过输入想要的检索的远端目录地址和想要用来匹配的正则表达式,就能获取到远端的文件了,至于用这些文件来干嘛,那就是需求问题了。

以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-12-22 22:24:45

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

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

遇到一个问题,需要正则匹配远端FTP目录下的文件,如果使用ftp客户端可以通过命令行很容易的做到这一点,但是暂时没有一个工具支持这样的需求,于是通过python对FTP的支持和对正则表达式的支持,写了这么一个简单的工具,用于使用正则表达式来匹配远端目录的文件. 代码如下 # coding=utf-8 ######################################################################### # File Name: reg_url.py #

正则表达式-菜鸟求助:关于python的正则匹配问题?

问题描述 菜鸟求助:关于python的正则匹配问题? pattern = re.compile(word.join(['.?' '.?']))这个是什么意思啊?功能目的是什么啊?看了好几圈了,还是不懂,求大神帮忙 解决方案 给word字符串添加'.?.?',生成一个最终的字符串作为正则表达式的pattern 解决方案二: pattern 是正则匹配规则,你DEBUG看看pattern值是多少 就知道正则的匹配规则了

js插件-swfUpload上传到ftp目录下,该怎么配置

问题描述 swfUpload上传到ftp目录下,该怎么配置 swfUpload上传到ftp,该怎么配置他的前台跟php后台,求详细 解决方案 swfUpload跟php 合作,再由php 传到FTP 解决方案二: php上传到ftp可以参考codeigniter-s3-swfupload/system/libraries/Ftp.phpHTML Large file uploader 解决方案三: 通过FTP方式上传文件夹(整个目录)

为什么python中用shutil.rmtree()来删除目录及目录内部的文件,会有文件残留

问题描述 为什么python中用shutil.rmtree()来删除目录及目录内部的文件,会有文件残留 为什么python中用shutil.rmtree()来删除目录及目录内部的文件,会有文件残留 解决方案 文件是否被锁定了,或者只读,可以查看一下文件的属性等.

用批处理上传文件到ftp目录下的实现方法_DOS/BAT

为了快速将项目中开发的补丁程序通过ftp快速上传到linux下,感觉每次用flashFxp等工具麻烦),写了个简单的批处理,与大家分享一下. 将以下代码保存为.bat格式的文件,每次将要上传的补丁保存在规定的本地目录中,只要双击执行此文件就能上传到你的指定目录上. 说明: 192.168.1.1 ftp ip 地址 21 端口 username 用户名 password 密码 temp.txt 保存ftp信息的临时文件,上传后删除 C:\Documents and Settings\user\桌

Python删除指定目录下过期文件的2个脚本分享_python

脚本1: 这两天用python写了一个删除指定目录下过期时间的脚本.也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些.就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够通用性,还有更多可以完善的地方.目前该脚本在python2.4下运行良好.同时,我在脚本中加入了对python版本的判断,理论上2.7下也应该可以正常使用.有环境的朋友可以帮忙测试一下.该脚本不完善的地方在于,只能支持一级目录下的文件删除,还不支持目录递归.同时过期文

批处理bat下载FTP服务器上某个目录下的文件_DOS/BAT

本代码以下载FTP服务器上某个目录下的所有文件为例. 如果需要下载某个目录下的.txt类型的所有文件,请把 mget *.* 改成 mget *.txt 如果需要下载某个目录下的某一个文件a.txt,请把 mget *.* 改成 get a.txt @echo off rem 指定FTP用户名 set ftpUser=FTPUSERNAME rem 指定FTP密码 set ftpPass=FTPPASSWORD rem 指定FTP服务器地址 set ftpIP=192.168.0.2 rem 指

Python和perl实现批量对目录下电子书文件重命名的代码分享_python

经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名: 例如: python代码如下: 复制代码 代码如下: import os import re def rename_dir(dir,regex,f):   if not os.path.isdir(dir) or not os.path.exists(dir) :     print("The input is not one directory or

python 正则-python3.4正则匹配HTML问题

问题描述 python3.4正则匹配HTML问题 2014年 井[4.4GB]:The.Last.Survivors.2014.720p.BluRay.x264-RUSTED 不知道怎么下载请看这里===> 我写的正则是:(.*?) 第二个内容(不知道怎么下载请看这里===)可以匹配出,但是我不要它. 两个表达式的嵌套标签一样. 正则该怎么写?最好可以只匹配出 2014年 井[4.4GB] 冒号 后面的内容 解决方案 python之正则匹配Python正则-多行匹配Python正则-多行匹配 解