Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用regex从os.walk给定的文件名中提取子字符串_Python_Regex - Fatal编程技术网

Python 使用regex从os.walk给定的文件名中提取子字符串

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' 我是一个新的编码

我基本上是想从这个操作系统中获取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'
  • 我是一个新的编码,这一直是一个头痛。任何帮助都将不胜感激,我知道这个代码没有意义,但我有点沮丧

    
    导入操作系统、全局、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')
    都不需要正则表达式。