【问题标题】:How to rename part of a filename represented as string in Python script如何重命名在 Python 脚本中表示为字符串的文件名的一部分
【发布时间】:2021-12-29 07:08:38
【问题描述】:

如果我有文件名Falcon_01.cpp , Falcon_02.cpp, Falcon_03.cpp ,.... 以及更多文件名,那么应该如何将该特定目录中的所有文件名更改为code_01.cpp,code_02.cpp,.. 基本上我如何在单个代码中替换所有文件名的后缀

【问题讨论】:

标签: python file replace rename script


【解决方案1】:

pathlib 非常方便:

from pathlib import Path
import re

parent_dir = Path("<path_to_dir>")
pattern = re.compile(r"^Falcon_[0-9]+\.cpp$")
falcon_files = (
    file
    for file in parent_dir.glob("Falcon_*.cpp")
    if file.is_file() and pattern.match(file.name)
)

for file in falcon_files:
    file.rename(file.with_name(file.name.replace("Falcon", "code")))

在你的情况下,正则表达式可能不是绝对必要的,但我把它扔在那里以保证只有完全匹配被重命名,如果那里有一些 Falcon_no_match_1234.cpp 文件。

【讨论】:

    【解决方案2】:

    你可以得到FILES_DIR的文件目录,然后运行下面的脚本

    import os, re
    FILES_DIR = r'...\...\...\...'
    os.chdir(FILES_DIR)
    files = os.listdir(os.getcwd())
    
    for file in files:
        if re.match('Falcon.+\.cpp', file):
            os.rename(file, 'code' + file[file.find('Falcon')+6:])
    

    这将重命名以Falcon 开头并以.cpp 结尾的所有文件。

    【讨论】:

    • 逻辑!,我修改了代码,现在它使用正则表达式来确定给定目录中文件的名称和扩展名,并将新文件保存在同一目录中。
    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2020-06-04
    • 2020-06-29
    • 2018-12-31
    相关资源
    最近更新 更多