【Python】按csv文件名称中的日期进行筛选,并复制转移

老样子先导库,然后定义主函数


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')

​

你可能感兴趣的:(python)