我有几个相当大的文件夹,其中包含许多csv文件,命名约定如下所示:
GAbc_Pt0_20210605_142451
编辑:Pt值的范围可以是0-4,日期值的范围可以很大
我试图删除共享相同“Pt”值和相同“20210X0X”值的文件,同时保留第一个实例
我怎样才能做到这一点
编辑:这是我目前拥有的
i = 0
pDataLoc = []
for root, subdirectories, files in os.walk(filePath):
for subdirectory in subdirectories:
if subdirectory == 'ProcessedData':
pDataLoc.append(os.path.join(root, subdirectory))
i+=1
for directory in pDataLoc:
fileList = os.listdir(directory)
#splits and collects meta data from file names
fileNameMetaData = [data for file in os.listdir(directory) for data
in re.split("_", file)]
#Pt
srch = 'Pt'
r = re.compile(fr'(?<=){srch}(?=)')
site = list(filter(r.findall, fileNameMetaData))
#date
srch = '2021'
r = re.compile(fr'(?<=){srch}(?=)')
date = list(filter(r.findall, fileNameMetaData))
注意:数据文件存储在嵌套文件夹中
我试图将相关信息编译成一个列表,以便于某种同步的“if==”类型逻辑来识别要删除的文件,但我很难弄清楚如何使用它,更不用说如何在不丢失找到的第一个实例的情况下使用它了
我不确定这是否是最好的方法,因此任何批评都将不胜感激
谢谢
假设您的文件名的字符串“Pt0_20210605”始终位于[5:17]中,您可以使用如下逻辑解决此问题:
你可以这样做:
通过这样做,您将递归地查看文件夹并搜索 从
GAbc_Pt0_20210605
开始(相同的Pt0和相同的日期)。将此更改为另一个pt0或另一个日期,您应该很好编辑:
在第二条评论中,您可以:
然后,您可以筛选列表并删除所需的文件
我假设
GAbc_Pt0_20210605_142451.csv
的142451
部分是24小时格式的14:24:51,即小时:分钟:秒,并且您要保留的“第一个实例”是时间上最早的一个。我希望早上的时间是_072451
,而不是_72451
如果这是正确的,您的文件名可以按字母顺序排序,并沿最后的
_
分割,将前半部分与前半部分进行比较(如果匹配,我们已经保留了一个实例,如果不匹配,新块刚刚开始,这就是要保留的实例):代码只执行一次最小检查,它不涉及任何不是
.csv
文件的内容相关问题 更多 >
编程相关推荐