Python 扫描并文件夹并读取文件

最近发现一个问题,从项目开始到现在,url 的路径要爆炸了,因此要看一下项目里所有 spring controller 的路径配置。正好前一段时间学了一点 python,就尝试使用 python 写个小程序扫描一下。

需要用到的python函数

  • 读取文件夹
  • 打开文件
  • 读取文件内容
  • 简单字符串处理

分析文件内容

读取文件使用 open函数,第一个参数为文件全路径,第二个参数为读写标识,'r'表示只读

file.readlines()函数直接把每一行读取出来,返回一个数组

遍历数据时使用了 enumerate 函数,这样可以同时得到行号

tuple是个好东西,简单的数据结构直接用 tuple 来实现,不需要新建一个数据结构或者对象了,函数返回一个 tuple 也可以让返回值变得更加丰富

def parse_springmvcfile(filepath, filename):
    request_mapping = []
    file = open(filepath + "/" + filename, "r")
    is_spring_file = False
    root_path = None
    # 一行一行的读取文件
    for linenum, line in enumerate(file.readlines()):
        if is_spring_file:  # 已经找到配置行说明该文件是 spring controller 文件
            if "@RequestMapping" in line:  # 找到 springmvc 路径配置行
                if root_path is None:
                    root_path = get_cotroller_path(line)  # 根路径
                else:
                    request_mapping.append((linenum+1,root_path + get_cotroller_path(line)))  # 解析路径字段
        else:  # 还没找到配置行说明该文件是 spring controller 文件,别干其它的,继续找
            if "@Controller" in line:
                is_spring_file = True
    return is_spring_file, request_mapping

扫描文件夹

递归扫描文件夹,并将指定后缀的文件全路径放到数组中返回

数组的并接使用 extend 函数,使用 append 函数向数组中添加元素

def scanpath(filepath, suffix):
    filelist = []
    print("开始扫描【{0}】".format(filepath))
    if not os.path.isdir(filepath):
        print("【{0}】不是目录".format(filepath))
        exit(-1)
    for filename in os.listdir(filepath):
        if os.path.isdir(filepath + "/" + filename):
            filelist.extend(scanpath(filepath + "/" + filename, suffix))
        else:
            if filename.endswith(suffix):
                filelist.append((filepath, filename))
    return filelist

截取路径配置

controller 里的路径是配置成@RequestMapping("/路径"),要把里面的路径取出来,需要对字符串进行处理。我对正则不熟,只好用比较土的方法

def get_cotroller_path(request_mapping):
    group = request_mapping.split("\"")
    path = group[1]
    if path.endswith("/"):
        path = path[:-1]
    if not path.startswith("/"):
        path = "/" + path
    return path

现在调用scanpath后使用parse_springmvcfile,就可以把所有controller 文件找到并显示里面所有的路径配置。

开会了开会了,有些路径要调整一下

:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,853评论 18 139
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,615评论 1 118
  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,595评论 6 37
  • 两本不错的书: 《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。 《Python核心编程...
    静熙老师哈哈哈阅读 3,386评论 0 80
  • 又是一年夏天的雨季。 早上窗外的天空剛蒙蒙亮,但我已被淅淅瀝瀝的下雨聲叫醒。睜開朦朧的雙眼朝窗外望下去,樓下的水泥...
    齊望迪阅读 462评论 0 0