简单的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[0][0], '/'.join([pwd, info[8]])))
	while stack:
		s_top = stack.pop()
		if s_top[1][-2:]=='/.' or s_top[1][-3:]=='/..':
			continue
		if s_top[0] == '-':
			yield s_top[1].replace('//', '/')
		elif s_top[0] == 'd':
			try:
				ftp.cwd(s_top[1])
			except:
				continue
			pwd = ftp.pwd()
			ftp.dir(get_item_info)
			if not nodir:
				yield s_top[1].replace('//', '/')

if __name__ == '__main__':
	host = '服务器地址'
	user = '用户名'
	passwd = '密码'

	for param in sys.argv[1:]:
		key = param[:2]
		value = param[3:]
		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智能电网

 结果如下图所示

 


简单的FTP搜索-Python实现

 

你可能感兴趣的:(python)