如何在Python中消除多个文件(带有模式)的某些名称? [重复]

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

我正在尝试删除文件名的某些部分,以便我可以使用模式来每天提取数据。

我在这个文件夹中有以下文件(F:\Source)。

WH_BEE_FULL_20241017_170853_1.bak
WH_BEE_FULL_20241017_170853_2.bak
WH_BEE_FULL_20241017_170853_3.bak
WH_BEE_FULL_20241017_170853_4.bak
WH_BEE_FULL_20241017_170853_5.bak
WH_BEE_FULL_20241017_170853_6.bak

我需要删除文件名中的“170853”部分,这样最终结果将是:

WH_BEE_FULL_20241017_1.bak
WH_BEE_FULL_20241017_2.bak
WH_BEE_FULL_20241017_3.bak
WH_BEE_FULL_20241017_4.bak
WH_BEE_FULL_20241017_5.bak
WH_BEE_FULL_20241017_6.bak

因此,“20241017”每天都会更改,因为它是“YYYYMMDD”格式,但其他字段(如“WH”、“BEE”、“FULL”和“_1 ~ _6”)将是静态的。

重命名后,这些文件将被重新定位到 (F:\Destination) 文件夹。

我该如何用 Python 来做这件事?

python
1个回答
1
投票

好吧,既然您没有提供代码示例,我所能做的就是编写一个示例脚本来完成所需的操作。同时使用

os
shutil
模块。

import os
import shutil

source_dir = r'F:\Source'
destination_dir = r'F:\Destination'

os.makedirs(destination_dir, exist_ok=True)

for filename in os.listdir(source_dir):
    if filename.endswith('.bak'):
        parts = filename.split('_')
        new_filename = f"{parts[0]}_{parts[1]}_{parts[2]}_{parts[3]}_{parts[4][-1]}.bak"
        
        old_file_path = os.path.join(source_dir, filename)
        new_file_path = os.path.join(destination_dir, new_filename)
        
        shutil.move(old_file_path, new_file_path)

        print(f"Moved and renamed: {filename} to {new_filename}")

您可以将该代码保存在 python 文件中,然后使用

python filename.py
运行它。

© www.soinside.com 2019 - 2024. All rights reserved.