Arkadaşlar, elimde binlerce resim dosyası var. dosya isimleri barkod numarası verilidi. excel dosyasında da barkod numaralarıya ürün isimerinin listesi var Bu listedeki bilgiler ile resimleri karşılaştırmak istiyorum. Resimleri olmayan ürünleri bulmak istiyorum. Bunu Python ile yapabilir miyim? Yaparsam naasıl yaparım
Excel dosyam:
A B
1) barkodlar ad
2) 12 ürünadi1
3) 34 ürünadi2
4) 56 ürünadi3
5) 78 ürünadi4
resimler klasörüm:
12.png
34.png
56.png
Görüldüğü gibi resmiler klasörümde 78 isminde bir resim yok.Fakat excel tablomda 78 barkodu var.
import pandas
import xlrd
import os
df = pandas.read_excel("test.xlsx")
liste = [i[:-4] for i in os.listdir("./resimler/")]
for i in df["barkod"].values:
if str(i) not in liste:
print("{} barkodlu ürünün resmi yok".format(i))
#Çıktı:
#78 barkodlu ürünün resmi yok
Not: Scripti çalıştırdığım konum resimler klasörünün bir üst klasörü.
Düzenleme:
pandas ve xlrd 3. parti modüllerdir öncelikle bunları yüklemeyi unutmayın.
pip install pandas
pip install xlrd
1 Beğeni
cevabın için teşekkürler kod çalıştı. Yalnız çıktıyı exceldeki dosyaya üçüncü bir sütuna nasıl yazdırabilirim
@smhgk yardımı ile sorunumu çözdüm. kodları buraya bırakıyorum başkasının da ihtiyacı olursa diye . isimlerinin kontrol ettiğim resim dosyaları aynı dizinde bulunan resimler klasörüdür işlem gerçekleştirdiğim excel dosyası da programla aynı dizinde bulunan DATA.xlsx dosyasıdır:
from openpyxl import load_workbook
import os
wb = load_workbook(filename = 'DATA.xlsx')
ws = wb["STOK LİSTESİ"]
rows = ws.max_row
cols = ws.max_column
resimler = [i[:-4] for i in os.listdir("./resimler/")]
barkodlar = [ws.cell(i,1).value for i in range(1,rows+1)]
adlar = [ws.cell(i,2).value for i in range(1,rows+1)]
barkodsuz = [ws.cell(i,3).value for i in range(1,rows+1)]
print(barkodlar)
print(adlar)
print(barkodsuz)
for i in range(1,rows+1):
current = ws.cell(i,1).value
if current not in resimler:
ws.cell(row=i, column=3,value="Resim Yok")
wb.save("DATA.xlsx")
1 Beğeni