关于批量查找拷贝文件的问题

关于批量查找拷贝文件的问题

我是做了个在盘符下批量查找拷贝文件的程序
比较简单
原先做的时候没想到要查找的盘符有可能是几个盘符一块查找
而且现在又有个问题
就是我写的程序因为使用到了os.path.walk
当我要查找的盘符下面的文件数量巨多的时候查询文件就很慢了
以下是我的程序

import os,shutil

sn=[i[:-1] for i in file('log.txt')]     log.txt是输入我要批量查找的文件名称 一行一个关键字 都是8位的  SN是读取这个LOG.TXT得出一个sn的list
susdown=open('sn.txt','w+')     创建一个SN.TXT 里面将写入 已经查找拷贝成功的文件名
faidown=open('fail.txt','w+')       创建一个fail.TXT 里面将写入 没有查找到的文件名

def copylog(arg,directory,files):     拷贝文件的函数
    for logname in files:
        logpath=os.path.join(directory,logname)
        #print logname[:8]
        if arg==logname[:8]:
            print logpath
            shutil.copy('%s' % (logpath),'.')
            susdown.write('%s' % (arg))
            susdown.write('\n')
            break
        else:
            continue

   
for a in sn:     循环sn这个list
    os.path.walk('D:/',copylog,'%s' % (a))  在D盘符下查找拷贝文件

susdown.close()
sue=[i[:-1] for i in file('sn.txt')]  读取查找成功的文件的sn.TXT

fai=list(set(sn)-set(sue))     得到没有查找到的文件名列表
for b in fai:
    faidown.write('%s' % (b))
    faidown.write('\n')
faidown.close()
请问哪位能解决我的程序的效率问题
或者给出更好的解决方法 谢谢了
呼。。有的循环可以合并吧, 还有I/O太高了
刚在google里面知道了可以把for a in sn放到copylog里面去
感觉IO是高了些
现在感觉还是慢
不知道该怎么用python做这个