Python开发【笔记】:获取目录下所有文件
获取文件
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()
Python开发【笔记】:获取目录下所有文件的更多相关文章
- 取CPU序列号,获取网卡,取硬盘系列号,获取目录下的文件,强制删除目录
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- 阿里云OSS 获取目录下所有文件
public class AliyunHandle { public static string accessKeyId = "a1uI5xxxxxxxxxrP4H"; publi ...
- Golang获取目录下的文件及目录信息
一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() { pwd,_ := os.Getwd() //获取当前目录 //获取文件或目录相关信息 fileInfoList ...
- C/C++ 获取目录下的文件列表信息
在C/C++编程时,需要获取目录下面的文件列表信息. 1.数据结构 struct dirent { long d_ino; /* inode number 索引 ...
- python递归获取目录下指定文件
获取一个目录下所有指定格式的文件是实际生产中常见需求. import os #递归获取一个目录下所有的指定格式的文件 def get_jsonfile(path,file_list): dir_lis ...
- shell获取目录下所有文件夹的名称并输出
获取指定目录/usr/下所有文件夹的名称并输出: shell代码: #!/bin/bash #方法一 dir=$(ls -l /usr/ |awk '/^d/ {print $NF}') for i ...
- File类 递归 获取目录下所有文件文件夹
package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...
- python获取目录下所有文件
#方法1:使用os.listdir import os for filename in os.listdir(r'c:\\windows'): print filename #方法2:使用glob模块 ...
- php递归获取目录下所有文件
<?php function getFileList($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($hea ...
随机推荐
- [转]ztree出现$.fn.zTree is undefined错误的解决办法。
原文地址:https://blog.csdn.net/smallboy2011/article/details/20554269 问题描述,在一个界面使用ztree创建树,提示TypeError: $ ...
- Future 模式简介
简介 Future 模式是多线程开发中的一种常见设计模式,它的核心思想是异步调用. 比如我们在网上购物,付款后就会产生一个订单,之后你该干嘛干嘛,快递小哥会上门送货,而不必像在超市结账那样,付款后要等 ...
- git push 失败
先上图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvV29KaWFvRGFaaG9uZw==/font/5a6L5L2T/fontsize/400/fil ...
- Java知多少(20)变量的作用域
在Java中,变量的作用域分为四个级别:类级.对象实例级.方法级.块级. 类级变量又称全局级变量或静态变量,需要使用static关键字修饰,你可以与 C/C++ 中的 static 变量对比学习.类级 ...
- 牛客网_Go语言相关练习_选择题(2)
注:题目来源均出自牛客网. 一.选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用. Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有. C选项函数声明语法有 ...
- 创建sequence和触发器出现权限不足
解决方式: 已sysdba登陆后,进行授权 grant create any sequence to [用户]创建sequence权限不足解决方法 grant create trigger to [用 ...
- mybatis xml 文件中like模糊查询
1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. 2.CONCAT()函数 My ...
- [Optimization] Advanced Dynamic programming
这里主要是较为详细地理解动态规划的思想,思考一些高质量的案例,同时也响应如下这么一句口号: “迭代(regression)是人,递归(recursion)是神!” Video series for D ...
- [Laravel] 06 - Project: from Usercase to View
故事背景 一.项目预览 From: https://www.imooc.com/video/12518 二.知识点 通过项目复习之前的重难点,在此列出并解决. /* implement */ 项目开始 ...
- 10享元模式Flyweight
一.什么是享元模式 Flyweight模式也叫享元模式,是构造型模式之 一,它通过与其他类似对象共享数据来减小内存 占用. 二.享元模式的结构 三.享元模式的角色和职责 抽象享元角色: 所有具体享元类 ...