读取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'])) + '********')

在ArcGIS中,批量获取一个文件夹多个数据中对应要素的面积和记录数通常会涉及到使用ArcPy模块,这是一个用于自动化GIS任务的Python模块。以下是通过ArcPy进行批量处理的基本步骤: 1. 导入ArcPy模块。 2. 使用`arcpy.ListFeatureClasses()`函数获取指定文件夹中所有的要素类(Feature Class)。 3. 遍历每一个要素类,使用`arcpy.Describe()`函数获取其属性信息。 4. 对每个要素类执行计算面积的操作,可以使用`CalculateField_management()`函数将面积计算结果存储在新的字段中。 5. 使用`arcpy.da.SearchCursor()`函数获取每个要素类的记录数。 6. 打印或者存储每个要素类的面积信息和记录数。 请注意,进行这些操作前需要确保ArcGIS和Python环境已经正确安装,并且你有足够的权限访问指定的文件夹和执行GIS操作。 示例代码可能如下所示(这只是一个简单的框架,实际情况可能需要更复杂的逻辑): ```python import arcpy # 设置工作环境为包含要素类的文件夹 arcpy.env.workspace = "C:/path/to/your/folder" # 获取文件夹内所有要素类 feature_classes = arcpy.ListFeatureClasses() # 遍历要素类 for feature_class in feature_classes: # 描述要素类信息 desc = arcpy.Describe(feature_class) # 计算面积并存储(这里假设要素类是多边形类型) # 在这里添加字段,如果字段已经存在则跳过 if not 'AreaField' in [field.name for field in arcpy.ListFields(feature_class)]: arcpy.AddField_management(feature_class, "AreaField", "DOUBLE") # 更新字段值 arcpy.CalculateField_management(feature_class, "AreaField", "!shape.area@SQUAREMETERS!", "PYTHON_9.3") # 获取记录数 count = 0 with arcpy.da.SearchCursor(feature_class, ["AreaField"]) as cursor: count = sum([row[0] for row in cursor]) # 打印面积和记录数 print(f"Feature Class: {feature_class}") print(f"Total Area: {sum([row[0] for row in arcpy.da.SearchCursor(feature_class, 'AreaField')])} square meters") print(f"Record Count: {count}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值