文件数量不一致

时间:2015-11-24 12:33:14

标签: python csv

我有一个文件夹,其中有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个丢失的文件?

1 个答案:

答案 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上运行,则可能需要存储小写版本。