day5_homework(递归实现)

1、当前目录下有很多文件夹、文件,统计/usr/local/这个目录下,如果是文件,那么就给删除 
/usr/local/,自己创建一下目录和文件,实现这个功能

import os
fpath = os.path.join(os.getcwd(),'usrlocal') # 按照题意生成新的路径是D:pythonyz-codeday5usrlocal
def del_file(fpath):
f_path = os.listdir(fpath) # f_path是一个list
for factor in f_path: # factor的英文意思是元素,表示循环f_path列表里的每个目录和文件
my_path = os.path.join(fpath,factor) # 把路径设计好,供循环删除文件使用
if os.path.isfile(my_path): # 拼接的绝对路径是文件的话就删除该文件
os.remove(my_path)
else: # 拼接的绝对路径是目录的话继续调用该函数逐层删除文件
del_file(my_path)
del_file(r'D:pythonyz-codeday5usrlocal') # 调用函数,把所有文件都删除了
 

2、写一个监控tomcat日志的脚本,如果日志中出现error、exception的关键字,记录这一行的行数,和这一行的内容、这个文件的文件名,在文件里的格式如下:文件名:tomcat20171020.log   18行 sdfsdfsdfsdfs error xx


上图的文件结构要提前准备好,然后写代码就OK了

start.py的代码如下:

import os
import sys
from lib.logfile import listen_log
from conf.setting import DATA_PATH
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  # 添加环境变量在别的机器上也可以运行,在shop目录上Sources Root
sys.path.insert(0, BASE_PATH)  # 添加环境变量在别的机器上也可以运行
listen_log(DATA_PATH)


setting.py的代码如下:

import os
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  # 取到shop目录
DATA_PATH = os.path.join(BASE_PATH, 'data')  # 获取数据,也就是读日志文件的路径
RES_PATH = os.path.join(BASE_PATH, 'logs')  # 把结果存放到该路径下
RES_FILENAME = os.path.join(RES_PATH, 'log.txt')  # 写结果的文件名
KEY_WORDS = ['error', 'exception']  # 关键字列表,如果还有别的关键字写进来就行

logfile.py的代码如下:

import os
from conf.setting import RES_FILENAME, KEY_WORDS


def listen_log(dir_path): # 监控日志的函数,传入一个路径
f_list = os.listdir(dir_path) # f_list里面存放的是日志文件
fw = open(RES_FILENAME, 'w', encoding='utf8')
for f in f_list:
if f.endswith('.log'): # 判断是否是.log结尾
abs_path = os.path.join(dir_path, f) # 获取绝对路径,是一个日志文件名
fr = open(abs_path, encoding='utf8') # 循环每个日志文件
line_num = 1
for line in fr: # 循环每个日志文件的每一行
for key in KEY_WORDS: # 循环error、exception
if key in line: # 判断关键字是否在每一行里
res = '{filename}:{line_num} {content} '.format(filename=f, line_num=line_num, content=line)
fw.write(res)
fw.flush()
line_num += 1
fr.close()
fw.close()
data目录下的log文件自己提前创建好,自己输入一下内容包含error和exception,README.md自己创建并把需求分析写进去
原文地址:https://www.cnblogs.com/laosun0204/p/8523962.html