首先惊喜地发现公众号有留言功能了,这样大家交流也更便利,以后有经费搞个抽奖什么的也方便。
下面写一个近期学的小技巧:
当一个文件夹内有大量文件且我们要批处理指定时间范围时,通常我们(小白阶段)要去通配一下时间段,使用命令行mv或者cp一下
那有没有那种代码实现直接把脚本放进去运行就能锁定指定文件的功能?
假定我们文件夹下有一个时间序列很长的
文件名中时间戳的格式为`wrfout_dXX_YYYY-MM-DD_HH:MM:SS`。
筛选出09:30到12:00之间的文件,可以使用以下代码:
import glob
from datetime import datetime
# 定义起止时间
start_time_str = '09:30:00'
end_time_str = '12:00:00'
start_time = datetime.strptime(start_time_str, '%H:%M:%S').time()
end_time = datetime.strptime(end_time_str, '%H:%M:%S').time()
WRF_FILES = [filepath for filepath in glob.glob('./*wrfout_d03*')
if start_time <= datetime.strptime(filepath.split('_')[-1].split('.')[0], '%H:%M:%S').time() <= end_time]
print(WRF_FILES)
这段代码首先将起止时间字符串转换为`datetime.time`对象。接着,利用列表推导式遍历所有符合基本模式`*wrfout_d03*`的文件。对于每个文件,提取并解析文件名中代表时间的部分(假定为最后一个`_`后的部分),将其转换为`datetime.time`对象。
进行简单粗暴的比大小,如果符合条件,则将文件路径添加到结果列表中。
当然不同时间格式的话稍微改改就行,如果是纯数字甚至用不上datetime库,直接比大小即可。