Python-程序模块化

1、程序模块化模块化

一个程序可能须要导入本身写的模块,或者须要导入、查找、修改文件等操做。当把程序移植到其余路径执行时,会由于模块或文件路径的变化而报错。函数

程序模块化,就是将整个程序(包含该程序须要用到的全部函数、变量、文件、模块等)当作一个总体。只要整个程序内部的相对路径不改变,将程序移植到其余路径执行,也不会报错。spa

 

2、程序(实现一个功能)的基本结构3d

 

一、findkeys实现的功能:在日志中查找error和exception,并将对应的文件名、行数、内容写到日志文件中

二、bin目录:包含可执行程序

三、conf目录:配置文件,配置该程序须要用到的全部数据及路径

四、data目录:包含该程序须要用到的全部数据

五、lib目录:包含可执行程序须要调用的全部方法

六、log目录:保存结果日志文件

七、README.MD:程序说明

 

3、配置环境变量日志

一、conf目录下的setting.py,定义全局变量。将base_path加入临时环境变量,当base_path的路径(findkeys目录)发生变化时,也能正确获取到DATAPATH和LOGPATHcode

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获取日志文件路径

 

二、seach.py:遍历DATAPATH下的全部文件的每一行;当文件中存在error或exception时,记录该文件名,行数和该行的全部内容blog

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

 

三、searchkeys.py:调用search.py,传入DATAPATH和LOGPATHutf-8

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)
相关文章
相关标签/搜索