免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3734 | 回复: 2
打印 上一主题 下一主题

关于批量查找拷贝文件的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-04 14:59 |只看该作者 |倒序浏览
我是做了个在盘符下批量查找拷贝文件的程序
比较简单
原先做的时候没想到要查找的盘符有可能是几个盘符一块查找
而且现在又有个问题
就是我写的程序因为使用到了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()
请问哪位能解决我的程序的效率问题
或者给出更好的解决方法 谢谢了

论坛徽章:
0
2 [报告]
发表于 2007-12-04 23:19 |只看该作者
呼。。有的循环可以合并吧, 还有I/O太高了

论坛徽章:
0
3 [报告]
发表于 2007-12-05 09:07 |只看该作者
刚在google里面知道了可以把for a in sn放到copylog里面去
感觉IO是高了些
现在感觉还是慢
不知道该怎么用python做这个
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP