【问题标题】:Rename multiple files using a name list使用名称列表重命名多个文件
【发布时间】:2015-10-23 02:30:37
【问题描述】:

我有一个包含许多(大约 500 个)文件的文件夹,名为
roz001.mp3
roz002.mp3
...

然后我有一个 .txt(称为“names.txt”)文件,格式如下
roz001 O korytnačke a opici
roz002 Vlk a líška
...

基本上,它类似于“(不带扩展名的文件名)(空格)(带有所需文件名且不带扩展名的字符串)”。

如何使用此列表重命名这些文件?我需要将文件“roz001.mp3”重命名为“O korytnačke a opici.mp3”等等。我真的不在乎这将如何完成 - 我可以访问终端(我在 Mac 上),我也可以使用 Python,但我愿意使用任何可用于执行此操作的方法。

提前感谢您的所有帮助。

【问题讨论】:

  • Python 可以轻松做到这一点。你试过什么?
  • 我尝试通过this 线程。我考虑将文件列表加载到字典中,其中原始文件名将是键,所需名称将是值,然后遍历文件夹中的所有文件,将我当前重命名的文件名拆分为“ .mp3",查看原始文件名的第一部分是否在我的字典中列为键,如果是,则将其替换为字典中该键的值。但我一开始就卡住了——我不知道如何将名单加载到字典中......
  • 你引用的线程浏览整个目录。这里更简单:只需阅读“names.txt”并处理每一行......并且您应该在问题中提供对另一个线程的引用并在那里说出您想要做什么。由于缺乏以前的努力,我可以避免更多的否决...

标签: list file rename


【解决方案1】:

在 Python 中,这将非常简单:

  • 打开文件“names.txt”并逐行读取
  • 在 old_name 和 new_name 的第一个空格处分割的每一行
  • 将 old_name.mp3 重命名为 new_name.mp3

代码可能是这样的:

import os

with open("names.txt") as fd:
    for line in fd:
        line = line.strip()
        if len(line) == 0: continue
        old, new = line.strip().split(" ", 1)
        os.rename(old.strip() + ".mp3", new.strip() + ".mp3")

【讨论】:

  • 非常感谢。我最终在os.rename() 之前添加了if os.path.isfile(old.strip() + ".mp3"):,因为我的列表不是防弹的,因为我发现它在我身上崩溃了几次,但这确实解决了我的问题。真的,你救了我,谢谢。
【解决方案2】:

看看这里(Bulk Rename),认为它会做你需要做的。

另一种选择是编写一个使用 for /f 循环的批处理脚本 (explained here)

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多