2017-10-12 8 views
2

Je travaille sur la vérification de PDF corrompu dans un système de fichiers. Dans le test que je cours, il y a presque 200k PDF. Il semble que les petits fichiers endommagés soient correctement alertés, mais j'ai rencontré un gros fichier de 15 Mo qui est corrompu et le code se bloque indéfiniment. J'ai essayé de mettre Strict à False sans chance. Il semble que c'est l'ouverture initiale qui pose problème. Plutôt que de faire des threads et de définir un timeout (que j'ai essayé par le passé avec peu de succès), j'espère qu'il existe une alternative.PyPDF2 - Impossible de passer. Un grand fichier corrompu

import PyPDF2, os 
from time import gmtime,strftime 

path = raw_input("Enter folder path of PDF files:") 
t = open(r'c:\pdf_check\log.txt','w') 
count = 1 
for dirpath,dnames,fnames in os.walk(path): 
    for file in fnames: 
     print count 
     count = count + 1 
     if file.endswith(".pdf"): 
      file = os.path.join(dirpath, file) 
      try: 
       PyPDF2.PdfFileReader(file,'rb',warndest="c:\test\warning.txt") 
      except PyPDF2.utils.PdfReadError: 
       curdate = strftime("%Y-%m-%d %H:%M:%S", gmtime()) 
       t.write(str(curdate) + " " + "-" + " " + file + " " + "-" + " " + "fail" + "\n") 
      else: 
       pass 
       #curdate = strftime("%Y-%m-%d %H:%M:%S", gmtime()) 
       #t.write(str(curdate) + " " + "-" + " " + file + " " + "-" + " " + "pass" + "\n") 
t.close() 

Répondre

0

Il semble qu'il y ait un problème avec PyPDF2. Je n'ai pas réussi à le faire fonctionner, cependant, j'ai utilisé pdfrw et il ne s'est pas arrêté à ce stade et a traversé tous les quelques centaines de milliers de docs sans problème.