简单的FTP搜索-Python实现
动机:某日,在公司FTP上找东西,太原始了,没有搜索,翻了大半天,终于找到了,过后,就动手写了一段。
没有建索引,只是根据关键字遍历所有文件名查找,用的时候才去查,也很原始
代码如下:
#!/bin/usr/evn python
# -*- coding:utf-8 -*-
####################################
# --2009.11.23--
# --PM 1:00--
# --ActivePython 2.6.2.4--
# --by migle---pisoft--
####################################
### 搜索公司FTP服务器
####################################
import sys
import re
import ftplib
ERR_NOERR, ERR_PARAM, ERR_FTP = range(3)
def walk_ftp(ftp, cd = None, nodir = True):
if cd:
stack = [('d', cd)]
else:
stack = [('d', '/')]
def get_item_info(line):
info = line.split()
stack.append((info, '/'.join(])))
while stack:
s_top = stack.pop()
if s_top[-2:]=='/.' or s_top[-3:]=='/..':
continue
if s_top == '-':
yield s_top.replace('//', '/')
elif s_top == 'd':
try:
ftp.cwd(s_top)
except:
continue
pwd = ftp.pwd()
ftp.dir(get_item_info)
if not nodir:
yield s_top.replace('//', '/')
if __name__ == '__main__':
host = '服务器地址'
user = '用户名'
passwd = '密码'
for param in sys.argv:
key = param[:2]
value = param
if key == '-k':
pattern = value
else:
print "useage!!!"
print "-k关键字"
sys.exit(ERR_PARAM)
ftp = ftplib.FTP(host)
ftp.login(user, passwd)
print 'connected is success'
try:
for item in walk_ftp(ftp):
if re.search(pattern,item.split('/')[-1]):
print '找到:',item
except:
exitcode = ERR_FTP
else:
exitcode = ERR_NOERR
ftp.quit()
sys.exit(exitcode)
以上代码保存为FTPSearcher.py
运行:搜索文件名中包含"智能电网"的文件
D:\code\python>python FTPSearcher.py -k智能电网
结果如下图所示
页:
[1]