老样子先导库,然后定义主函数
import os,shutil
def select(path)
在一个循环中,完成文件名称的断开,提取,计算
由于我的文件日期都很规则,在相同位置存在时间戳,因此,可以利用split(' ',num)[ ] 来截取文件名称的片段,这里遍历的是listdir即列表目录,结果是str类型,我的目的是提取跨度大于两年的csv文件,需要类型转化为int()才可以相减
for i in os.listdir(path) : #path是众多csv文件所在的文件夹路径
date=str(i).split('_',6)[5] #这一堆数指的是按下划线将csv文件名称分七部分,只留下第五部分,因为列表索引是从0开始的,注意!!!只能是字符串的格式来用split() [ ' ', ' ', ' ' ]
pre_date=int(date.split('-',1)[0])
post_date=int(date.split('-',1)[1])
timestep=post_date-pre_date
print(timestep)
if timestep<=2:
old_path=os.path.join(path,i)
shutil.copy(old_path,new_path) #这里用的copy 比move要慢,文件要上千的话就要稍等片刻了,copy比起move来说,不会将源文件的特定csv文件删除,推荐!
import os,shutil
def seek(path):
count=1
for i in os.listdir(path):
# print(count) 此处可略过
# count+=1 统计当前目录下的csv文件个数
# filename=os.path.splitext(i) 将结尾的csv和文件名分开,无病呻吟
# print(filename)
date=i.split('_',6)[5]
print(date)
pre_date=int(date.split('-',1)[0])
post_date=int(date.split('-',1)[1])
a=post_date-pre_date
print(a)
if a<2:
old_path=os.path.join(path, i)
shutil.copy(old_path,r'D:\Flu\HH_lessthan2y')
seek(r'D:\Flu\H')