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