组织具有相同文件名的文件夹并为其创建子文件夹

问题描述 投票:0回答:1

我有一个文件夹,里面装满了我下载的抖音视频。文件名看起来像这样“2022-12-25_@sample123_7181201932356120774”我想为每个拥有超过 1 个视频的创作者创建一个文件夹。在这种情况下,它将是“sample123”

这是我到目前为止生成的代码,我有文件夹中的文件名列表,并设法将其拆分为创建者@

import glob
import os.path

# fle name template is "2022-12-25_@sample123_7181201932356120774"

dir = 'C:\\Users\\name\\Downloads\\sample test'
files = glob.glob(os.path.join(dir, '*.mp4'))

for file in files:
    a = file.split("@")[1]
    b = a.split("_")[0]
    print(b) # output is sample123

任何人都可以指出我正确的方向,我不知道下一步该做什么。

python glob python-re
1个回答
0
投票

您可以使用以下结构创建一个字典:{creator: [filename1, filename 2...], ...},然后移动 len(value) > 1 的所有(键,值)对的文件。以下是一些代码:

import glob
import os.path
from os import makedirs, rename

# fle name template is "2022-12-25_@sample123_7181201932356120774"

my_dir = 'C:\\Users\\name\\Downloads\\sample test'
files = glob.glob(os.path.join(my_dir, '*.mp4'))

creator_dic = {}

for file in files:
    a = file.split("@")[1]
    b = a.split("_")[0]
    #print(b) # output is sample123
    creator_dic.setdefault(b, []).append(file)

for creator, filelist in creator_dic.items():
    if len(filelist) > 1:
        creator_folder = f'{my_dir}/{creator}/'
        makedirs(creator_folder, exist_ok=True)
        for file in filelist:
            file = file.split('\')[-1]
            rename(f'{my_dir}/{file}', f'{creator_folder}{file}')
© www.soinside.com 2019 - 2024. All rights reserved.