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

2016-03-02  本文已影响0人  骄傲牛

最近发现一个问题,从项目开始到现在,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 文件找到并显示里面所有的路径配置。

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

:)

上一篇下一篇

猜你喜欢

热点阅读