读取workspace下多个android studio文件夹下的java文件(统计文件个数,方便筛选github上大量相似且重复的工程)

#从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'])) + '********')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值