2012-01-06 5 views
2

J'utilise Python Imaging Library pour effectuer un traitement, et je voudrais alimenter mon script avec des données via un canal plutôt que de passer un nom de fichier en argument.Charger une image à partir d'un flux d'entrée en Python

J'ai vu que Image.open peut accepter n'importe quel objet semblable à un fichier en plus d'une chaîne comme paramètre. J'ai essayé de passer sys.stdin directement, mais il semble qu'il y ait quelques problèmes avec seek (logiquement). Alors, comment puis-je envelopper le flux dans un tampon qui fournit toutes les opérations de fichiers? (ou toute autre solution appropriée pour lire l'image directement à partir de stdin).

Répondre

3

Utilisez StringIO.

import StringIO 
import sys 

filelike = StringIO.StringIO(sys.stdin.read()) 

# Now use `filelike` as a regular open file, e.g.: 
filelike.seek(2) 
print filelike.read() 
+1

J'avais déjà trouvé la solution et j'étais sur le point de répondre automatiquement, mais merci quand même! :-) – fortran

Questions connexes