注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

python 找出两目录下的不同文件(目录)  

2012-02-09 13:43:00|  分类: Web技术-Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

恩,如何使用python从两目录下找出不同文件呢?要求:1 如果是同名文件且有内容有不同这处则提取出来。2如果两目录中有一个缺失了文件(目录)也提取出来。

代码:

#coding:utf-8

import os

while True:

    print('\r\n 请输入目录后按回车开始查寻(退出请输出q):')

    d = raw_input();

    if d == 'q':

        quit();

    frist_dir ='D:/new/'+d;

    second_dir   = 'D:/old/'+d;

    #缺失的文件

    nofile_1 =  []

    nofile_2 =  []

    #不同文件

    diff_file = []

 

    #缺失的目录

    nodir_1  =  []

    nodir_2  =  []

    print("\n----------diff file-------\r\n")

 

    #只比较同名的文件(目录)

    def compare_file(frist_dir,second_dir):

        if not os.path.isdir(frist_dir):

            print("\r\n 输入目录有误! \r\n")

            return False

        for i in os.listdir(frist_dir):

            f_1 = frist_dir+'/'+i

            f_2 = second_dir+'/'+i

            #同时存在

            if os.path.isfile(f_1) and os.path.isfile(f_2):

                #只比较一行代码

                f1 = open(f_1)

                f2 = open(f_2)

                while True:

                    line1 = f1.readline()

                    line2 = f2.readline()

                    #全部读完

                    if not line1 and not line2:

                        break;

                    #有一个读完

                    elif not line1 and line2:

                        diff_file.append(f_1+'||'+f_2)

                        print("%s<------->%s"%(f_1,f_2))

                        break;

                    #有一个读完

                    elif line1 and not line2:

                        diff_file.append(f_1+'||'+f_2)

                        print("%s<------->%s"%(f_1,f_2))

                        break;

                    #有一行不同

                    elif line1 != line2:

                        diff_file.append(f_1+'||'+f_2)

                        print("%s<------->%s"%(f_1,f_2))

                        break;

                f1.close()

                f2.close()

            #有可能是目录    

            elif os.path.isdir(f_1) and os.path.isdir(f_2):

                continue

                compare_file(f_1,f_2)

            else:

                if os.path.isdir(f_1):

                    nodir_2.append(f_1)

                elif os.path.isfile(f_1):

                    nofile_2.append(f_1)

 

                if os.path.isdir(f_2):

                    nodir_1.append(f_2)

                elif os.path.isfile(f_2):

                    nofile_1.append(f_2)

 

    compare_file(frist_dir,second_dir)

    print("\n total diff files %d"%len(diff_file))

    print("\r\n----------no file-------\r\n")

    print(nofile_1)

    print(nofile_2)

    print("\r\n----------no dir------------\r\n")

    print(nodir_1)

    print(nodir_2)


这样就可以在控制台一直查寻了,如图:

python 找出两目录下的不同文件(目录) - fc-lamp - fc-lamp的博客

不过,以上代码有缺陷。

关于input与raw_input的区别查看:http://www.pythonclub.org/python-basic/input

 

  评论这张
 
阅读(301)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017