Python 使用regex从os.walk给定的文件名中提取子字符串
我基本上是想从这个操作系统中获取3条信息Python 使用regex从os.walk给定的文件名中提取子字符串,python,regex,Python,Regex,我基本上是想从这个操作系统中获取3条信息 是否有一个名为unit的文件夹?如果是,我想知道文件夹的内容 在这些内容中,是否有以下格式的文件夹名称:\d\d\d\d\d\u DAY\d\d?如果是这样,我想提取第一个(\d\d\d\d\d\d),并将其保存为date 在该文件夹树中,是否有MXF文件?如果是,请将上一个文件夹的内容移动到:'Users/davealterman/Desktop/Volumes/HOW\u to\u OCM/RAID OCM/FS4/'+'DATE' 我是一个新的编码
\d\d\d\d\d\u DAY\d\d
?如果是这样,我想提取第一个(\d\d\d\d\d\d)
,并将其保存为date
'Users/davealterman/Desktop/Volumes/HOW\u to\u OCM/RAID OCM/FS4/'+'DATE'
导入操作系统、全局、re、shutil
从pathlib导入路径
FS5_路径='Users/davealterman/Desktop/Volumes/HOW_TO_OCM/RAID OCM/FS4'
主页路径='/Users/davealterman/Desktop/Volumes/HOW_TO_OCM/_fromproduction'
os.chdir(主路径)
子列表=[]
i=-1
对于os.walk(主路径)中的目录、子目录和文件:
对于sub中的sub:
打印(sub)
subList.append(sub)
i+1
formatRegex=re.compile(r'(\d{6})(\u DAY)(\d{2}))
mo=formatRegex.search(子)
mo.集团()
试试这个
导入os、glob、re、shutil
从pathlib导入路径
FS5_路径='Users/davealterman/Desktop/Volumes/HOW_TO_OCM/RAID OCM/FS4'
主页路径='/Users/davealterman/Desktop/Volumes/HOW_TO_OCM/_fromproduction'
os.chdir(主路径)
子列表=[]
i=-1
对于os.walk(主路径)中的目录、子目录和文件:
#是否有一个名为unit的文件夹?如果是,我想知道文件夹的内容。
#筛选包含`单元'的文件夹`
正在搜索='unit'
匹配的\u文件夹=过滤器(lambda文件夹\u名称:搜索\u中的文件夹\u名称,subs)
对于匹配的\u文件夹中的文件夹:
印刷品(
os.listdir(
加入(主路径、文件夹)
)
)
#在这些内容中,是否有格式为:\d\d\d\d\d\d\u DAY\d\d的文件夹名称?如果是这样,我想提取第一个(\d\d\d\d\d\d)并将其保存为日期。
date\u regex=re.compile(r'(\d{5})\u DAY\d{2})
folders\u matching\u regex=filter(lambda文件:date\u regex.fullmatch(文件),subs)
dates=[date_regex.match(文件夹)[0]用于文件夹中的文件夹\u matching_regex]
日期=日期[0]
mxf_regex=re.compile(r'.*\.pdf')
mxf_files=filter(lambda文件:mxf_regex.fullmatch(文件),files)
对于mxf_文件中的文件:
dest_dir=FS5_路径+日期+文件
移动(文件,目的地目录)
如果sub:function中的“unit”与内容(sub)一起工作
?在每次迭代中重新编译正则表达式是不必要的,也是浪费的。无论如何,.endswith('.pdf')
都不需要正则表达式。