【问题标题】:Rename files after entries in a list在列表中的条目后重命名文件
【发布时间】:2020-04-24 01:20:03
【问题描述】:

我需要系统地重命名一些文件。所以我有一个我希望文件名重命名的名称列表。该文件夹由wav 文件组成,其命名如下:

VP01.wav
VP02.wav
VP03.wav

ID_list 中的顺序已经是正确的顺序。所以基本上我希望VP01 将是01_aVP02 将是03_a,等等。我试着这样做:

ID_list = ['01_a', '03_a', '04_b', '01_b', '05_a', '04_a', '03_b']

import os
path = glob.glob('filepath\*.wav')
for item in path, ID_list:
    os.rename(item, item)

但它给了我:

TypeError: rename: src should be string, bytes or os.PathLike, not list

作为错误。我要更改的文件是wav 文件。 有人知道怎么做吗?

【问题讨论】:

  • 请添加完整的错误详情。
  • 请添加足够的信息以供其他人重现问题。
  • 即使它不会产生错误,你也会多次重命名同一个文件,这是没有意义的
  • 请提供错误详情
  • 您能否发布一份源文件示例列表、预期的新名称以及您如何确定它的新名称?

标签: python list rename


【解决方案1】:

这是一种方法:

from pathlib import Path

file_path = Path("path_containing_wav_files/")
path = file_path.glob('**/*.wav')

for en, x in enumerate(path):
    x.rename(ID_list[en] + '.wav')

【讨论】:

  • 感谢您的回答,但这给了我一个 TypeError: glob() missing 1 required positional argument: 'pattern'
  • 我的错。修好了。
  • 现在的错误是:AttributeError: 'str' object has no attribute 'glob'
  • 它再次给了我一个 AttributeError: 'generator' object has no attribute 'iterdir'
  • .iterdir 是 Path 类可用的方法。看起来我们需要在这里使用path。希望它有效。
猜你喜欢
  • 2018-01-14
  • 2023-03-19
  • 1970-01-01
  • 2020-07-03
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 2017-12-30
相关资源
最近更新 更多