web-dev-qa-db-fra.com

PIL image.open () fonctionne pour certaines images mais pas pour d'autres

J'utilise PIL pour ouvrir régulièrement les fichiers AREA de la NOAA. Dans le dernier lot d'images que j'ai reçu, la commande image.open () ne fonctionne tout simplement pas. Voici un code simple que j'ai écrit qui donne les mêmes résultats. Il ouvrira, effectuera une rotation et effectuera des tâches normales avec un fichier datant d’un mois et non avec un fichier datant d’aujourd’hui.

from PIL import Image
im = Image.open("path/to/file")
im.show()

Voici l'erreur:

File "image_goes.py", line 2, in <module>
im = Image.open("path/to/file")
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1980, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file

Voici ce que j'ai essayé: 

  1. Ouverture de l'image sur deux machines distinctes.
  2. Changer le dossier du fichier en cas de problème de permission
  3. Redéléchargement de l'image, ainsi que de deux autres lots, tous deux à l'aide de FTP manuellement ET de notre script automatique.

Mon hypothèse était qu'il y avait un problème avec notre script de téléchargement et qu'il ne téléchargeait pas complètement le fichier, mais cette hypothèse est rejetée par le fait que les nouveaux fichiers ont la taille correcte et que je les ai téléchargés manuellement à l'aide d'un client FTP. les mêmes résultats.

Ma seule autre théorie est qu’il ya un problème avec les fichiers NOAA aujourd’hui ou qu’ils ont été modifiés de telle sorte que PIL ne puisse plus les gérer, mais j’estime que cela est peu probable.

Toute aide grandement appréciée, Merci

10
Sam Creamer

Peut-être que le contenu n'est pas réellement synchronisé sur le disque. essayez Image.open(open("path/to/file", 'rb'))

7
wonder

Pour 

im = Image.open("path/to/file")

Essayer

im = Image.open(r"path/to/file")

C'est-à-dire, mettez une r avant la chaîne de chemin.

0
A G