一、程序模块化

一个程序可能需要导入自己写的模块,或者需要导入、查找、修改文件等操作。当把程序移植到其他路径执行时,会因为模块或文件路径的变化而报错。

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

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

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+1for 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)

转载于:https://www.cnblogs.com/jessicaxu/p/7761335.html

Python-程序模块化相关推荐

  1. python程序开发模块化_python-17-Python文件两种用途、模块化程序开发

    --------------------------------python文件的两种用途---------------------------------- py文件的两种用途: 1.直接运行 pr ...

  2. python程序员工作怎样-现在Python就业薪资高吗?Python程序员前景怎么样?

    现在Python就业薪资高吗?Python程序员前景怎么样? 近日,全球知名的开发者社区 Stack Overflow 发布了 2019 年度开发者调查报告.今年全球 190 个国家和地区共有近 9 ...

  3. python程序员年薪百万_想要成为年薪百万的Python程序员,这套面试题别错过

    近几年来,Python的运用范围越来越广,发展势头十分强劲.小到网页建设.网站搭建,大到人工智能AI.云计算.人脸识别.大数据分析等等尖端技术,都基于Python编程语言来实现. 在小伙伴们通过参加培 ...

  4. c与c十十与python_浅要分析Python程序与C程序的结合使用

    Python 是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问,对媒体文件的访问等.而作为软件开发的传统编程 ...

  5. 浅谈 Python 程序和 C 程序的整合

    浅谈 Python 程序和 C 程序的整合 Python 是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问, ...

  6. Python 程序和 C 程序的整合

    背景知识介绍 Python 语言的特点 Python 作为一门程序开发语言,被越来越多地运用到快速程序开发.Python 是一种解释型的,互动的,面向对象的编程语言,它包含了模块化的操作,异常处理,动 ...

  7. Python程序来计算球体的体积和面积

    球体(实体)通常被认为是二维图形,即使该图形从其中心在三个平面上可见.造成这种情况的主要原因是,球体仅使用其半径进行测量. 然而,空心球体被认为是三维图形,因为它在其球壁内包含空间,并且有两个不同的半 ...

  8. 小学生三分钟学会Python程序语法元素分析~总结笔记

    Python程序语法元素分析 前言:朕今年在读大二,苦逼学python,写博客为了更好的总结知识,每次写博客可能要花费几个小时,或者更多时间来总结知识,如果你觉得文章对你有帮助,可以在文章末尾点赞和评 ...

  9. python程序元素分析_荐 小学生三分钟学会Python程序语法元素分析~总结笔记

    Python程序语法元素分析 前言:朕今年在读大二,苦逼学python,写博客为了更好的总结知识,每次写博客可能要花费几个小时,或者更多时间来总结知识,如果你觉得文章对你有帮助,可以在文章末尾点赞和评 ...

  10. python课堂实例,Python电子教案2 1 Python程序实例解析课堂

    <Python电子教案2 1 Python程序实例解析课堂>由会员分享,可在线阅读,更多相关<Python电子教案2 1 Python程序实例解析课堂(41页珍藏版)>请在人人 ...

最新文章

  1. 5 修改request对象变量_【总结】前端5大常见设计模式,代码一看你就懂!
  2. Spark streaming vs JStorm
  3. 甲骨文正式发布Java 14(Oracle JDK 14)
  4. SSZipArchive的使用详解和遇到的问题
  5. ftp ---- vsftpd安装卸载
  6. AIM Tech Round 5C. Rectangles 思维
  7. Linux下安装VSCA
  8. Redis----windows下配置和运行
  9. angularjs sill 创建项目_AngularJS快速上手,从安装到运行
  10. mysql数据库库推荐书籍
  11. 发票查验一直网络异常、无法显示验证码、点击查验没反应怎么办?
  12. 拭目以待 英国女将谢洛克或将谱写飞镖传奇
  13. springbootvue简单的景点信息管理系统
  14. 网页上的漂浮物制作代码
  15. java串口通信读取电子秤RS232
  16. SDU_week11_水题汇总
  17. EFCore 的 DbFirst 模式
  18. 【狮子数学】chapter3-04-定积分计算(60-62)
  19. pdfbox将多页pdf转成多张长图片
  20. 百趣代谢组学分享:黑木耳多糖对小鼠肠道微生物及代谢表型的影响

热门文章

  1. 再倒入项目的时候,为什么要转为maven项目?
  2. 洛谷2017-2月月赛
  3. bzoj3322 最大生成树+LCA
  4. Perl的特殊变量汇总
  5. SQL Server 2005导入导出存储过程
  6. C++---显示实例化与隐式实例化,显示调用与隐式调用
  7. 力扣 距离顺序排列矩阵单元格
  8. 什么是“BM”女孩?“BM”女孩的标准是什么?
  9. 海底捞、百果园、大娘水饺凭什么可以疯狂扩张门店?
  10. 今天跟某个投了社区团购的资本合伙人聊,发现对于社区团购的认知,还是太肤浅