Nltk: Fichier non fermé dans les corpus de mots vides

Créé le 3 janv. 2018  ·  11Commentaires  ·  Source: nltk/nltk

/Users/kiddo/anaconda/lib/python3.6/site-packages/nltk/corpus/reader/wordlist.py:28: ResourceWarning: fichier non fermé <_io.bufferedreader i = "4">
return concat ([self.open (f) .read () pour f dans fileids])

C'est un avertissement que j'ai trouvé en mode débogage. J'ai pensé que vous aimeriez peut-être résoudre ce problème avant la prochaine version.

bug corpus enhancement goodfirstbug pythonic

Commentaire le plus utile

des nouvelles à ce sujet? Python 3.6 se plaint toujours de NLTK 3.3, sur à peu près toutes les ressources:

/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1107: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/lexnames'>
  for i, line in enumerate(self.open('lexnames')):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adj'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adv'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.noun'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.verb'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adj.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adv.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/noun.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/verb.exc'>

Tous les 11 commentaires

Bonjour, puis-je résoudre ce problème?

@iliaschalkidis @alvations Comment puis-je reproduire l'avertissement sous Linux?

@ sks4903440 En utilisant la version 3.2.5, vous pouvez essayer d'exécuter le script suivant dans votre ligne de commande:

test.py

import warnings
import nltk
warnings.filterwarnings('error', category=ResourceWarning)
stop_words = nltk.corpus.stopwords.words('english')

$ python test.py

Tu devrais obtenir:

ResourceWarning: unclosed file <_io.BufferedReader name='/Users/kiddo/nltk_data/corpora/stopwords/english'>

Corrigé dans # 1945

Hmmm .. Hériter du io.BufferedReader dans StreamCorpusReader est une solution intéressante mais peut-être que fermer correctement le fichier avec les gestionnaires de contexte with scope pourrait être une meilleure solution.

Et je pense que Python3.6 a des exigences particulières pour les fichiers qui sont différents des versions précédentes. Nous devons lire le journal des modifications de CPython pour être sûr que ce que nous faisons n'est pas simplement un pansement =)

@alvations Utiliser with serait sûrement une bonne idée. J'essaierais d'incorporer cela. Puisque dans CPython, le garbage collector ferme automatiquement le fichier après zéro comptage de références, je n'avais pas utilisé cela. Aussi pour que l'instruction with fonctionne, nous devrons utiliser io.BufferedReader ou implémenter les méthodes __enter__ et __exit__ . Que pensez-vous est mieux?

~ Je pense que nous n'avons pas à implémenter les méthodes d'entrée / sortie car nous n'hériterons pas de BufferedReader mais utiliserons le contexte pour ouvrir et fermer, puis laisser gérer le module io gérer le gc (garbage collection ). ~

C'est délicat, le io.BufferedReader déjà la fonction seek() comme et quand SeekableUnicodeStreamReader hérite de cela sans faire de super __init__() , je ne suis pas tout à fait sûr ce qu'il prend de BufferedReader.

Et en fait, nous ne pouvons pas vraiment envelopper le with dans le read() car cela empêchera les fonctions de recherche et de détection de fonctionner à moins que nous ne pirations le tampon dans le contexte with . Hum ...

des nouvelles à ce sujet? Python 3.6 se plaint toujours de NLTK 3.3, sur à peu près toutes les ressources:

/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1107: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/lexnames'>
  for i, line in enumerate(self.open('lexnames')):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adj'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adv'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.noun'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.verb'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adj.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adv.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/noun.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/verb.exc'>

Un autre problème qui semble être terminé, il serait peut-être bon de fermer le problème.

Merci à tous d'avoir soulevé le problème et @purificant pour le correctif!

Cette page vous a été utile?
0 / 5 - 0 notes