У меня есть набор файлов в каталоге, названный штрих-кодом, затем номер изображения. (Barcode_01.jpg, Barcode_02.jpg) и т. Д.
Я ищу поиск в формате CSV на основе части имени файла со штрих-кодом, затем, когда штрих-код найден, для переименования файла на основе информации встрока для этого штрих-кода.
Пример:
files in directory:
123456789_01.jpg
123456789_02.jpg
012345_01.jpg
012345_02.jpg
98765_01.jpg
98765_02.jpg
Штрих-коды относятся к ряду продуктов, которые в CSV также имеют код продукта и код цвета, который мне нужно переименоватьфайлы в формате {код продукта в CSV} {код цвета в CSV} {номер изображения исходного имени файла} .jpg
Эффективный поиск замены значения штрих-кода продуктоми цветовой код, сохраняя номер изображения.
Так что я использовал splitext, чтобы разобрать имена файлов и упростить их по сравнению с оригиналами, что прекрасно работает.
Я также посмотрел на xlwings иCSV для поиска значений в электронной таблице или CSV Но я не могу заставить их работать вместе.
Код, который я имею для переименования файлов, был изменен после просмотра некоторого основного шаффераучебные пособия
import os
os.chdir('[FILE DIRECTORY I NEED TO RENAME]')
for f in os.listdir('[FILE DIRECTORY I NEED TO RENAME]'):
f_name,f_ext = (os.path.splitext(f))
f_sku = (f_name.split('_')[0])
f_num = (f_name[-2:])
n_name = ('{}_{}{}'.format(f_sku,f_num,f_ext))
os.rename(f, n_name)
Я также пытался открыть с помощью dictreader и искать штрих-код в столбце 8 CSV, однако я очень плохо знаком с тем, как все это работает, и, похоже, не могу получить никаких результатов. Об этом стоит рассказать.
Я попытался сделать следующее, чтобы проверить, смогу ли я получить хотя бы несколько значений при поиске:
import csv
import os
for f in os.listdir('[file directory]'):
f_name,f_ext = (os.path.splitext(f))
f_sku = (f_name.split('_')[0])
f_num = (f_name[-2:])
with open('[file directory]','r') as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_file:
if row[8] == f_sku:
print(row)
Я определил строку поиска как'f_sku' сверху - это часть имени файла, которую я ищу в CSV. Это примерно настолько, насколько я могу получить.
РЕДАКТИРОВАТЬ: я получал ошибки с каталогами и проблемы, когда после запуска скрипта он не будет работать снова с новым изображением, установленным в каталоге, какsplit искал что-то не то, по какой-то причине он глючил.
Поэтому я откатился назад и использовал анализ файла, который был у меня в предыдущем скрипте. Я также определил каталог, чтобы сделать его более понятным.
import os
import csv
ImageDir = "IMAGE DIR"
RenDir = "RENAMED FILES DIR"
for f in os.listdir(ImageDir):
f_name,f_ext = (os.path.splitext(f))
f_bcode = (f_name.split('_')[0])
f_num = (f_name[-2:])
## FINDING THE NEW FILENAME FROM THE BARDCODES CSV
with open('CSV DIR', 'r') as
csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
for row in csv_reader:
if row[8] == f_bcode:
n_name = row[0]+"_"+row[5]+"_"+f_num+f_ext
os.rename(ImageDir + f,ImageDir + n_name)