#从github.com 上面下来的很多android studio项目(如果有eclispe格式的工程,需要手动删除掉,没有做兼容)(请参考上一篇github.com批量下载工程代码),代码的重复率特别高(一个一个看比较费时间,这个脚本函数只是查看他们的java文件名,有时候,20-30个项目一个一个对比非常费时,把他们文件名打印出来,更容易去除里面多个重复的项目)

import os

 

def get_file_path(root_path,file_list,dir_list):

    #获取该目录下所有的文件名称和目录名称

    dir_or_files = os.listdir(root_path)

    for dir_file in dir_or_files:

        #获取目录或者文件的路径

        dir_file_path = os.path.join(root_path,dir_file)

        #判断该路径为文件还是路径

        if os.path.isdir(dir_file_path):

            dir_list.append(dir_file_path)

            #递归获取所有文件和目录的路径

            get_file_path(dir_file_path,file_list,dir_list)

        else:

            # file_list.append(dir_file_path) #完整路径的文件名

            file_list.append(dir_file) #只有文件名


 

def walkFileInfos(dir, fileInfos):

    #用来存放所有的文件路径

    file_list = []

    #用来存放所有的目录路径

    dir_list = []

    get_file_path(dir,file_list,dir_list)

    # print(file_list)

    # print(dir_list)

    info = {}

    info['dir'] = dir

    info['dir_list'] = dir_list

    info['file_list'] = file_list

    fileInfos.append(info)

    # print('*********file sizes=' + str(len(file_list)) + '********')

 

if __name__ == "__main__":

    #根目录路径

    rootdir=r'F:\ximalaya'

    print(os.listdir(rootdir))

    dirs = os.listdir(rootdir)

    # 声明字典

    fileInfos = []

    for dir in dirs:

        path = os.path.join(rootdir,dir)

        javadir=''.join([path,r'\app\src\main\java'])

        walkFileInfos(javadir, fileInfos)

    

    #按文件数目大小排序,默认升序

    fileInfos = sorted(fileInfos, key = lambda info: len(info['file_list']))

 

    #打印排序后的文件信息

    for info in fileInfos:

        # print(info)

        # print(info['dir_list'])

        print(info['dir'])

        print(info['file_list'])

        print('*********file sizes=' + str(len(info['file_list'])) + '********')

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐