Python-程序模塊化


一、程序模塊化

一個程序可能需要導入自己寫的模塊,或者需要導入、查找、修改文件等操作。當把程序移植到其他路徑執行時,會因為模塊或文件路徑的變化而報錯。

程序模塊化,就是將整個程序(包含該程序需要用到的所有函數、變量、文件、模塊等)當做一個整體。只要整個程序內部的相對路徑不改變,將程序移植到其他路徑執行,也不會報錯。

 

二、程序(實現一個功能)的基本結構

 

1、findkeys實現的功能:在日志中查找error和exception,並將對應的文件名、行數、內容寫到日志文件中

2、bin目錄:包含可執行程序

3、conf目錄:配置文件,配置該程序需要用到的所有數據及路徑

4、data目錄:包含該程序需要用到的所有數據

5、lib目錄:包含可執行程序需要調用的所有方法

6、log目錄:保存結果日志文件

7、README.MD:程序說明

 

三、配置環境變量

1、conf目錄下的setting.py,定義全局變量。將base_path加入臨時環境變量,當base_path的路徑(findkeys目錄)發生變化時,也能正確獲取到DATAPATH和LOGPATH

import os, sys
base_path =os.path.dirname(os.path.dirname(__file__)) #base_path定位到findkeys這一層
sys.path.insert(0,base_path)                          #將根目錄findkeys加入環境變量
DATAPATH = os.path.join(base_path,'data')             #DATAPATH獲取數據的保存路徑
LOGPATH = os.path.join(base_path,r'log/log.log')      #LOGPATH獲取日志文件路徑

 

2、seach.py:遍歷DATAPATH下的所有文件的每一行;當文件中存在error或exception時,記錄該文件名,行數和該行的所有內容

import os
def search(datapath, logpath):
    with open(logpath,'w',encoding='utf-8')as f1:
        files = os.listdir(datapath)#獲取datapath下的所有文件,保存在list中
        for file in files:          #遍歷每一個文件
            filepath = os.path.join(datapath,file) #獲取文件的絕對路徑
            with open(filepath, 'r') as f2:
                n = 1   #保存當前讀取的行數;讀取一行,n+1
                for line in f2:
                    if 'error' in line or 'exception' in line:
                        f1.write('文件名:%s  第%d行  內容:%s' %(file, n, line))
                n += 1

 

3、searchkeys.py:調用search.py,傳入DATAPATH和LOGPATH

import sys, os
base_path = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0,base_path)      #將當前文件的父目錄的父目錄findkeys加入臨時環境變量
from conf.setting import DATAPATH #導入DATAPATH
from conf.setting import LOGPATH  #導入LOGPATH
from lib.search import search     #導入search()

if __name__ == '__main__':
    search(DATAPATH, LOGPATH)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM