先从简单的开始,遍历一个盘符,比如C盘,然后查询一个指定的文件。以下内容比较简单,我的最终的目的是想做个和everthing一样的小工具。(不知道有多少人用everything?)
以下内容可以直接保存并运行。
# -*- coding: cp936 -*-
import sys,os,time
sep=os.path.sep
def walkdir(diskname):
'''
说明:目前仅考虑根据盘符保存目录树文件
'''
export = ""
if not os.path.isfile(TREE+diskname+'.txt'):
starttime = time.time()
print "开始建立目录树:"
tempname = diskname + ':' +sep
for root,dirs,files in os.walk(tempname):
for dir in dirs:
export += os.path.join(root,dir) + '\n'
for file in files:
export += os.path.join(root,file) +'\n'
open(TREE+diskname+'.txt','w').write(export)
endtime = time.time()
usetime = endtime - starttime
print "成功建立目录树!耗时:" + str(usetime) + "秒"
def findfile(diskname,filename):
'''
仅查找到第一个匹配项后返回
'''
starttime = time.time()
route = ""
print "开始查询:"
for eachline in open(TREE+diskname+'.txt','r').readlines():
if eachline.find(filename) != -1 :
endtime = time.time()
usetime = endtime - starttime
print "第一个匹配项,路径为:" + eachline
print "结束查询!耗时:" + str(usetime) + "秒"
sys.exit()
print "无查询结果!"
sys.exit()
if __name__ == '__main__':
DISK = sys.argv[1]
FILE = sys.argv[2]
TREE = 'C:/Users/chen/Desktop/tree/'
walkdir(DISK)
findfile(DISK,FILE)
看看测试的情况: 从D盘查找一个包含“Game”的文件名或目录,把第一个结果返回
C:\Users\chen>python C:\Users\chen\Desktop\walkfind.py D Game
开始建立目录树:
成功建立目录树!耗时:31.7539999485秒
开始查询:
第一个匹配项,路径为 :\KuaiwanGames
结束查询!耗时:0.0350000858307秒
-------------------------------------------------
参数1: C:\Users\chen\Desktop\walkfind.py
参数2: D
参数3: Game
walk的速度还是比较快,28G的硬盘31秒就walk完了。
以下内容可以直接保存并运行。
# -*- coding: cp936 -*-
import sys,os,time
sep=os.path.sep
def walkdir(diskname):
'''
说明:目前仅考虑根据盘符保存目录树文件
'''
export = ""
if not os.path.isfile(TREE+diskname+'.txt'):
starttime = time.time()
print "开始建立目录树:"
tempname = diskname + ':' +sep
for root,dirs,files in os.walk(tempname):
for dir in dirs:
export += os.path.join(root,dir) + '\n'
for file in files:
export += os.path.join(root,file) +'\n'
open(TREE+diskname+'.txt','w').write(export)
endtime = time.time()
usetime = endtime - starttime
print "成功建立目录树!耗时:" + str(usetime) + "秒"
def findfile(diskname,filename):
'''
仅查找到第一个匹配项后返回
'''
starttime = time.time()
route = ""
print "开始查询:"
for eachline in open(TREE+diskname+'.txt','r').readlines():
if eachline.find(filename) != -1 :
endtime = time.time()
usetime = endtime - starttime
print "第一个匹配项,路径为:" + eachline
print "结束查询!耗时:" + str(usetime) + "秒"
sys.exit()
print "无查询结果!"
sys.exit()
if __name__ == '__main__':
DISK = sys.argv[1]
FILE = sys.argv[2]
TREE = 'C:/Users/chen/Desktop/tree/'
walkdir(DISK)
findfile(DISK,FILE)
看看测试的情况: 从D盘查找一个包含“Game”的文件名或目录,把第一个结果返回
C:\Users\chen>python C:\Users\chen\Desktop\walkfind.py D Game
开始建立目录树:
成功建立目录树!耗时:31.7539999485秒
开始查询:
第一个匹配项,路径为 :\KuaiwanGames
结束查询!耗时:0.0350000858307秒
-------------------------------------------------
参数1: C:\Users\chen\Desktop\walkfind.py
参数2: D
参数3: Game
walk的速度还是比较快,28G的硬盘31秒就walk完了。