Python 掃描并文件夾并讀取文件

最近發(fā)現(xiàn)一個問題钱骂,從項目開始到現(xiàn)在,url 的路徑要爆炸了涕烧,因此要看一下項目里所有 spring controller 的路徑配置咖气。正好前一段時間學(xué)了一點 python挨措,就嘗試使用 python 寫個小程序掃描一下。

需要用到的python函數(shù)

  • 讀取文件夾
  • 打開文件
  • 讀取文件內(nèi)容
  • 簡單字符串處理

分析文件內(nèi)容

讀取文件使用 open函數(shù)崩溪,第一個參數(shù)為文件全路徑浅役,第二個參數(shù)為讀寫標識,'r'表示只讀

file.readlines()函數(shù)直接把每一行讀取出來伶唯,返回一個數(shù)組

遍歷數(shù)據(jù)時使用了 enumerate 函數(shù)觉既,這樣可以同時得到行號

tuple是個好東西,簡單的數(shù)據(jù)結(jié)構(gòu)直接用 tuple 來實現(xiàn),不需要新建一個數(shù)據(jù)結(jié)構(gòu)或者對象了瞪讼,函數(shù)返回一個 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:  # 已經(jīng)找到配置行說明該文件是 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 文件,別干其它的,繼續(xù)找
            if "@Controller" in line:
                is_spring_file = True
    return is_spring_file, request_mapping

掃描文件夾

遞歸掃描文件夾钧椰,并將指定后綴的文件全路徑放到數(shù)組中返回

數(shù)組的并接使用 extend 函數(shù),使用 append 函數(shù)向數(shù)組中添加元素

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

現(xiàn)在調(diào)用scanpath后使用parse_springmvcfile秒际,就可以把所有controller 文件找到并顯示里面所有的路徑配置悬赏。

開會了開會了狡汉,有些路徑要調(diào)整一下

:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市闽颇,隨后出現(xiàn)的幾起案子盾戴,更是在濱河造成了極大的恐慌,老刑警劉巖兵多,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尖啡,死亡現(xiàn)場離奇詭異,居然都是意外死亡剩膘,警方通過查閱死者的電腦和手機衅斩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠褐,“玉大人畏梆,你說我怎么就攤上這事∧卫粒” “怎么了奠涌?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長磷杏。 經(jīng)常有香客問我溜畅,道長,這世上最難降的妖魔是什么极祸? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任慈格,我火速辦了婚禮,結(jié)果婚禮上遥金,老公的妹妹穿的比我還像新娘浴捆。我一直安慰自己,他們只是感情好汰规,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布汤功。 她就那樣靜靜地躺著,像睡著了一般溜哮。 火紅的嫁衣襯著肌膚如雪滔金。 梳的紋絲不亂的頭發(fā)上色解,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音餐茵,去河邊找鬼科阎。 笑死,一個胖子當(dāng)著我的面吹牛忿族,可吹牛的內(nèi)容都是我干的锣笨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼道批,長吁一口氣:“原來是場噩夢啊……” “哼错英!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起隆豹,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤椭岩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后璃赡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體判哥,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年碉考,在試婚紗的時候發(fā)現(xiàn)自己被綠了塌计。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡侯谁,死狀恐怖锌仅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情良蒸,我是刑警寧澤技扼,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站嫩痰,受9級特大地震影響剿吻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜串纺,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一丽旅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纺棺,春花似錦榄笙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春米丘,著一層夾襖步出監(jiān)牢的瞬間剑令,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工拄查, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吁津,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓堕扶,卻偏偏與公主長得像碍脏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)睹耐,斷路器,智...
    卡卡羅2017閱讀 134,695評論 18 139
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,582評論 1 118
  • 前言 Python的創(chuàng)始人為Guido van Rossum急黎。1989年圣誕節(jié)期間,在阿姆斯特丹侧到,Guido為了打...
    依依玖玥閱讀 3,570評論 6 37
  • 兩本不錯的書: 《Python參考手冊》:對Python各個標準模塊,特性介紹的比較詳細淤击。 《Python核心編程...
    靜熙老師哈哈哈閱讀 3,362評論 0 80
  • 又是一年夏天的雨季匠抗。 早上窗外的天空剛蒙蒙亮,但我已被淅淅瀝瀝的下雨聲叫醒污抬。睜開朦朧的雙眼朝窗外望下去汞贸,樓下的水泥...
    齊望迪閱讀 456評論 0 0