Python什么方法可以判断是否在某个时间范围内,python范围,需求获取某一个时间段的日
Python什么方法可以判断是否在某个时间范围内,python范围,需求获取某一个时间段的日
需求
获取某一个时间段的日志文件列表,日志文件名格式为alert-20150301.log
我的思路
输入时间范围[20150101, 20150630]glob.iglob 获取日志路径下的文件名列表格式化文件名列表, 截取alert-20150301.log里面的时间 log_file[6: -4], 并判断是否在所输入时间范围内, int(log_file[6: -4]) in range(20150101, 20150630) ?如果在所给出的时间范围内, 则存入列表, 若不存在则丢弃#!/usr/bin/pythonimport osimport globdef logfile_list(log_path): current_path = os.getcwd() os.chdir(log_path) for log_file in glob.iglob("alert*.log"): if int(log_file[6:-4]) in range(20150501, 20150630): print(log_file) os.chdir(current_path)if __name__ == "__main__": log_path = "/tmp/logs/" logfile_list(log_path)
本人是python菜鸟, 只能想到这个方法,请问还有没有其他更好的方法呢?
你的需求甚至不需要动用编程语言
bashfind /tmp -iname "alert*.log" -newerct '2015-06-01' ! -newerct '2015-06-30'
如果你只是想定位文件,这样就够了,newerct请参考find的manpage当中的newerXY,感叹号是逻辑否。就是说上面语句的含义是,找出比6月1号新但是不比6月30号更新的文件
如果你想进一步处理,例如打印出这些文件的详细信息,可以:
bashfind /tmp -iname "alert*.log" -newerct '2015-06-01' ! -newerct '2015-06-30' -ls
把所有文件移动到某个地方
bashfind /tmp -iname "alert*.log" -newerct '2015-06-01' ! -newerct '2015-06-30' -exec mv {} /target \;
删除匹配的文件
bashfind /tmp -iname "alert*.log" -newerct '2015-06-01' ! -newerct '2015-06-30' -delete
"if int(log_file[6:-4]) in range(20150501, 20150630)" 这一句效率很低,直接 if LOWER_BOUND < x < HIGHER_BOUND 就可以,不需要生成一个实际的list并在其中去查找。
另外这个时间是基于文件名里hard code的时间,你也可以用os.stat把文件的meta data(如文件创建时间,文件最后访问时间,文件最后修改时间)给pull出来做比较。(这样和上面的find做的比较最后修改时间是类似的)
编橙之家文章,
相关内容
- 想使用Python语言写个Linux环境下可视界面求指点,pyth
- Python元组列表怎么计算每个item指定单元最快捷方式,
- Python清理计算过程中占用内存数据问题,python鍗犵敤鍐
- 求教Python中文编码望大神给解答,python中文编码,1.椭圆
- 用Python方法将搜狗词库转换成可读文件的思路是什么,
- qiniu CDN python如何获取下载domainname,qiniudomainname,正在试
- Python方法可以提取QQ群消息并进行关键字分析吗?,p
- 求Python快速判定ASCII字符和非ASCII字符的方法,pythonas
- Win环境下python代码执行报错NON-ASCII character问题,pytho
- Python内存回收模块gc这段代码应该如何理解,pythongc,1、
评论关闭