À l'aide de io.BufferedReader sur un flux obtenus avec open()?

Je veux utiliser un tampon de flux parce que je veux utiliser un peek() de la méthode de jeter un regard vers l'avant, mais utiliser mon flux avec une autre méthode qui attend un fichier objet semblable. (Je ne l'utiliserais seek(), mais peut-être la poignée d'ambiance dans l'I/O qui ne prend pas en charge l'accès aléatoire.)

Mais ce test échoue:

AttributeError: 'fichier' objet n'a pas d'attribut "_checkReadable'

import sys
import io

srcfile = sys.argv[1]
with open(srcfile, 'rb') as f:
    fbuf = io.BufferedReader(f)
    print fbuf.read(20)

Ce qui se passe et comment puis-je résoudre ce problème? J'ai pensé BufferedReader était destiné à de la mémoire tampon d'un ruisseau. Si oui, pourquoi ne le open() fonction retourne pas quelque chose qui est compatible avec elle?

  • Il est intéressant. Bien que nous ayons les mêmes versions (2.7.x), nous obtenons légèrement différents messages d'erreur.
  • Je l'ai trouvé. Il y a un commentaire dans io.py comme """la Méthode des descriptions et des implémentations par défaut sont héritées de la version C cependant.""" C'est donc en fonction de c ou versions de l'OS.
  • Ce n'est pas spécifiques aux systèmes d'exploitation. Mon Python 2.6.7 se plaint _checkReadable ainsi, alors que mon 2.7.2 se plaint readable. Je ne trouve pas l'engager dès maintenant, mais c'était probablement changé cela quelque part entre 2.7.0 et 2.7.2.
  • double possible de Faire de io.BufferedReader à partir de sys.stdin en Python
InformationsquelleAutor Jason S | 2012-04-17