zoukankan      html  css  js  c++  java
  • 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自己创建并把需求分析写进去
  • 相关阅读:
    json 字符串解析mark
    Base64格式加载后台资源示例
    Visual SVN Server+TortoiseSVN进行源代码管理
    Android 高德地图 java.lang.UnsatisfiedlinkError Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;)
    [Android] keytools生成jsk文件以及获取sha1码
    JavaScript:父页面与Iframe页面方法互调
    VMWare WorkStation中MacOS虛擬機無法啓動的問題
    Xamarin.Android调用百度地图
    C#中String与byte[]的相互转换
    Cordova总是弹出Connection to server was Unsuccessful
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8523962.html
Copyright © 2011-2022 走看看