【问题标题】:Renaming specific character python重命名特定字符python
【发布时间】:2021-12-29 12:37:23
【问题描述】:

我正在尝试编写代码来重命名文件。基本上我想添加“fluid_mask”,

这是我到目前为止写的内容

import os
import shutil

from tqdm import tqdm

src= r"C:\Users\cetinh\Desktop\New folder (7)"
dest = r"C:\Users\cetinh\Desktop\New folder (8)"

for filename in tqdm(os.listdir(src), position=0, leave=True, dynamic_ncols=True, desc="Total"):
        file_path = os.path.join(src, filename)
        a = os.path.join(src, filename.replace(filename[-9], "_fluid_mask_"))
        if os.path.isfile(os.path.join(dest, os.path.basename(a))) ==1:
            pass
            tqdm.write("Skipping " + filename)
        else:
            os.rename(file_path, a)
            shutil.move(a, dest)
            tqdm.write("Copying " + filename + "-----> " + os.path.basename(a))

这就是我得到的

Copying 840624002_OS_V9_20170310_0102.png -----> 840624002_fluid_mask_OS_fluid_mask_V9_fluid_mask_20170310_fluid_mask_0102.png

据我所知,只需将“_”替换为“fluid_mask”,但我只需替换文件名中的最后一个下划线。

谁能告诉我如何解决这个问题?

谢谢

【问题讨论】:

  • 使用带有re.sub()的正则表达式而不是str.replace()
  • 或者用str.split('_')分割文件名,在最后一个元素之前插入fluid_mask,然后将它重新组合在一起。

标签: python python-3.x operating-system file-rename shutil


【解决方案1】:

replace() 替换 all 字符串中出现的子字符串。你想要的可能是这样的

i = filename.rfind('_') #find the last underscore
filename = filename[:i] + "_fluid_mask_" + filename[i+1:]

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2017-02-21
    • 2014-11-26
    • 2016-05-16
    • 2020-11-20
    • 2022-07-19
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多