簡體   English   中英

使用正則表達式從 os.walk 給出的文件名中提取子字符串

[英]Extract substrings using regex from filenames given by os.walk

我基本上是想從這個 os.walk 中獲取 3 條信息

  1. 里面有沒有名字單位的文件夾? 如果是這樣,我想知道文件夾的內容。
  2. 在這些內容中,是否有格式為: \d\d\d\d\d\d_DAY\d\d的文件夾名稱? 如果是這樣,我想提取第一個(\d\d\d\d\d\d)並將其保存為date
  3. 在該文件夾樹的更深處,是否有 MXF 文件? 如果是這樣,請將上一個文件夾的內容移動到: 'Users/davealterman/Desktop/Volumes/HOW_TO_OCM/RAID OCM/FS4/' + 'DATE'

我是編碼新手,這讓我很頭疼。 任何幫助將不勝感激,我知道這段代碼沒有意義,但我有點沮喪


import os, glob, re, shutil 
from pathlib import Path

FS5_path = 'Users/davealterman/Desktop/Volumes/HOW_TO_OCM/RAID OCM/FS4'

home_path = '/Users/davealterman/Desktop/Volumes/HOW_TO_OCM/_FROM PRODUCTION'

os.chdir(home_path)

subList = []
i = -1
for dirs, subs, files in os.walk(home_path):

    for sub in subs:
        print(sub)
        subList.append(sub)
        i + 1
        formatRegex = re.compile(r'(\d{6})(_DAY)(\d{2})')
        mo = formatRegex.search(sub)
        mo.group()

試一試。

import os, glob, re, shutil 
from pathlib import Path

FS5_path = 'Users/davealterman/Desktop/Volumes/HOW_TO_OCM/RAID OCM/FS4'

home_path = '/Users/davealterman/Desktop/Volumes/HOW_TO_OCM/_FROM PRODUCTION'

os.chdir(home_path)

subList = []
i = -1
for dirs, subs, files in os.walk(home_path):
    # Is there a folder with the name unit in it? If so, I want to know the contents of the folder.
    
    # filter folders containing `unit`
    searching_for = 'unit'
    matched_folders = filter(lambda folder_name: searching_for in folder_name, subs)    
    for folder in matched_folders:
        print(
            os.listdir(
                os.path.join(home_path, folder)
            )
        )
    
    # Within those contents, is there a folder name with the format: \d\d\d\d\d\d_DAY\d\d? If so, I want to extract the first (\d\d\d\d\d\d) and save it as date.
    date_regex = re.compile(r'(\d{5})_DAY\d{2}')

    folders_matching_regex = filter(lambda file: date_regex.fullmatch(file), subs)
    dates = [date_regex.match(folder)[0] for folder in folders_matching_regex]
    date = dates[0]
    mxf_regex = re.compile(r'.*\.pdf')
    mxf_files = filter(lambda file: mxf_regex.fullmatch(file), files)
    for file in mxf_files:
        dest_dir = FS5_path + date + file
        shutil.move(file, dest_dir)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM