我有一个文件夹,其中有672个jpg文件和一个相应的csv文件,其中包含与这些图像文件相关的数据。问题是csv文件包含709条记录,因此文件夹中必定缺少一些相应的图像文件。
我尝试过这个Python脚本应该可以告诉我哪些文件丢失了
import csv
import os
import glob
i = 1
j = 0
k = 0
with open('points.txt', 'rb') as f:
reader = csv.reader(f)
print "missing files"
for row in reader:
if not os.path.isfile("img_resize/" + str(row[1])):
print row[1], i
k = k + 1
i = i + 1
for filename in glob.iglob('img_resize/*.jpg'):
j = j + 1
print "total files in folder ", j
print "total files in csv ", i
程序的输出是
缺少文件
名称1
w_7489.jpg 574
文件夹672中的总文件
csv 710中的总文件
csv的第一行是标题,所以如果我们考虑到这一点,那么csv中有709条记录,文件夹中有672个图像文件。但唯一丢失的文件是“w_7489.jpg”,实际上我已经手动检查了这个文件。
我的问题是为什么该程序无法找到其他36个丢失的文件?
答案 0 :(得分:0)
您可以更新测试脚本以添加Python Counter
以计算CSV文件中每个文件的出现次数,如下所示:
from collections import Counter
import csv
import os
import glob
i = 1
k = 0
file_counts = Counter()
with open('points.txt', 'rb') as f:
reader = csv.reader(f)
print "missing files"
for row in reader:
file_counts.update([row[1]])
if not os.path.isfile("img_resize/" + str(row[1])):
print row[1], i
k += 1
i += 1
j = len(list(glob.iglob('img_resize/*.jpg')))
print "total files in folder ", j
print "total files in csv ", i
print
print "duplicates"
for filename, count in file_counts.items():
if count > 1:
print count, filename
如果任何文件存储多次,则会显示。如果您在Windows上运行,则可能需要存储小写版本。