【发布时间】:2018-04-17 03:20:32
【问题描述】:
我有一个包含几千张图片的文件夹,名为:10000.jpg、10001.jpg 等;和一个包含两列的csv 文件:id 和name。
csv id 与文件夹中的图像匹配。
我需要根据 csv 中的 name 列重命名图像(例如,从 10000.jpg 到 name1.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,是的,只要根据
id将name分配给图像即可。我想我已经很接近了。 -
在 Python 3 中,字符串已经被解码(它已经是 UTF)。此外,您的示例中未显示该行代码,因此请完整提供有问题的代码。
标签: python-3.x csv