【问题标题】:Rename images in file based on csv in Python在Python中基于csv重命名文件中的图像
【发布时间】:2018-04-17 03:20:32
【问题描述】:

我有一个包含几千张图片的文件夹,名为:10000.jpg10001.jpg 等;和一个包含两列的csv 文件:idname。 csv id 与文件夹中的图像匹配。

我需要根据 csv 中的 name 列重命名图像(例如,从 10000.jpgname1.jpg

我一直在按照下面的 for 循环尝试 os.rename()

with open('train_labels.csv') as f:
    lines = csv.reader(f)
    for line in lines:
        os.rename(line[0], line[1])

这给了我循环内的编码错误。

知道我在逻辑中遗漏了什么吗?

还尝试了另一种策略(如下),但出现错误:IndexError: list index out of range

with open('train_labels.csv', 'rb') as csvfile:
    lines = csv.reader(csvfile, delimiter = ' ', quotechar='|')
    for line in lines:
        os.rename(line[0], line[1])

【问题讨论】:

  • 这很可能是 csv 文件中发生的事情。尝试将模式指定为 open as 'r'
  • 能否请您发布实际错误?那么name 列中与id 列在同一行的值就是您要重命名的值?
  • 这里是具体的错误:f = (bs.decode(encoding, errors=errors) for bs in f) AttributeError: 'str' object has no attribute 'decode'
  • @pstatix,是的,只要根据idname分配给图像即可。我想我已经很接近了。
  • 在 Python 3 中,字符串已经被解码(它已经是 UTF)。此外,您的示例中未显示该行代码,因此请完整提供有问题的代码。

标签: python-3.x csv


【解决方案1】:

我也遇到了同样的错误。当我在记事本中打开 CSV 文件时,我发现 ID 和名称之间没有逗号。所以请检查一下。否则你可以在Renaming images in folder看到解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 2021-04-04
    • 2022-11-13
    • 2011-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多