zoukankan      html  css  js  c++  java
  • 【笔记】:获取目录下所有文件

    获取文件

    import os
    
    
    def sub_dirs(rdir):
        li = os.listdir(rdir)
        return li
    
    def main(rdir):
        content = sub_dirs(rdir)
        for i in content:
            i = os.path.join(rdir,i)
            if os.path.isdir(i):
                main(i)
            else:
                print(i)
    
    main('/home/tvrecord')
    

    定时删除目录下时间大于10天的文件

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import os
    import time
    import sys
    import logging
    import datetime
    import threading
    
    
    # 检测目录
    ROOT_DIR = '/data2/log2/'
    # 保留10天文件
    SAVE_DATE = 10
    # 开始时间小时
    START_HOUR = 2
    # 开始时间分钟
    START_MINUTE = 00
    
    
    
    def daemon():
        import os
        # create - fork 1
        try:
            pid = os.fork()
            if pid > 0:
                return pid
        except OSError as error:
            logging.error('fork #1 failed: %d (%s)' % (error.errno, error.strerror))
            return -1
        # it separates the son from the father
        os.chdir('/opt/pbx')
        os.setsid()
        os.umask(0)
        # create - fork 2
        try:
            pid = os.fork()
            if pid > 0:
                return pid
        except OSError as error:
            logging.error('fork #2 failed: %d (%s)' % (error.errno, error.strerror))
            return -1
        sys.stdout.flush()
        sys.stderr.flush()
        si = open("/dev/null", 'r')
        so = open("/dev/null", 'ab')
        se = open("/dev/null", 'ab', 0)
        os.dup2(si.fileno(), sys.stdin.fileno())
        os.dup2(so.fileno(), sys.stdout.fileno())
        os.dup2(se.fileno(), sys.stderr.fileno())
        return 0
    
    def set_log():
        logging.basicConfig(filename="/data2/log2/delete_log", level=logging.INFO,
                            format="%(asctime)s  [%(filename)s:%(lineno)d] %(message)s", datefmt="%m/%d/%Y %H:%M:%S [%A]")
    
    def sub_dirs(rdir):
        '''
        获取目录下所有文件
        :param rdir:
        :return:
        '''
        li = os.listdir(rdir)
        return li
    
    
    def get_files(rdir):
        '''
        获取文件路径
        :param rdir:
        :return:/data2/log2/ariservice7/ari.log.10
        '''
        content = sub_dirs(rdir)
        for i in content:
            i = os.path.join(rdir, i)
            if os.path.isdir(i):
                yield from get_files(i)
            else:
                yield i
    
    def timer():
        '''
        设置定时
        :return:
        '''
        _date = datetime.datetime.now()
        excute_time = '%s %s:%s' % (time.strftime('%Y-%m-%d'), START_HOUR, START_MINUTE)
        excute_time = time.strptime(excute_time, '%Y-%m-%d %H:%M')
        excute_time = time.mktime(excute_time)
        if _date.hour > START_HOUR:
            excute_time += 24 * 60 * 60
        elif _date.hour == START_HOUR and _date.minute >= START_MINUTE:
            excute_time += 24 * 60 * 60
        logging.info('timer wait %s', excute_time - time.time())
        timer = threading.Timer(excute_time - time.time(), execute, )
        timer.start()
    
    def execute():
        '''
        主任务
        :return:
        '''
        delete_time = time.time() - 24*60*60*SAVE_DATE
        logging.info('delete time[%s]',delete_time)
        for file in get_files(ROOT_DIR):
            file_time = os.path.getmtime(file)
            logging.info('prepare delete file[%s] delete_time[%s] file_time[%s]',file,delete_time,file_time)
            if file_time < delete_time:
                os.remove(file)
                logging.info('deleted file[%s]',file)
                time.sleep(1)
        timer()
    
    def main():
        set_log()
        pid = daemon()
        if pid:
            return pid
        execute()
    
    if __name__ == '__main__':
        main()
    

      

  • 相关阅读:
    提取BioGRID中的基因symbol和得分所在列
    windows端同步数据到samba共享
    C++的基本语法
    上传文件到服务器功能
    django数据库的使用
    django文件的下载实现
    获取文本域输入的内容
    js的if判断
    ajax的使用
    Oracle ADG备库新增变为一主多从
  • 原文地址:https://www.cnblogs.com/lianzhilei/p/9722006.html
Copyright © 2011-2022 走看看