Nltk: ملف غير مغلق في Stopwords corpora

تم إنشاؤها على ٣ يناير ٢٠١٨  ·  11تعليقات  ·  مصدر: nltk/nltk

/Users/kiddo/anaconda/lib/python3.6/site-packages/nltk/corpus/reader/wordlist.py:28: ResourceWarning: ملف غير مغلق <_io.bufferedreader i = "4">
إرجاع concat ([self.open (f) .read () لـ f في fileids])

هذا تحذير وجدته في وضع التصحيح. اعتقدت أنك ربما ترغب في إصلاح ذلك قبل الإصدار التالي.

bug corpus enhancement goodfirstbug pythonic

التعليق الأكثر فائدة

أي أخبار عن هذا؟ لا يزال Python 3.6 يشكو من NLTK 3.3 ، على كل مورد تقريبًا:

/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'>

ال 11 كومينتر

مرحبًا ، هل يمكنني معالجة هذه المشكلة؟

iliaschalkidisalvations كيف يمكنني إعادة إنتاج التحذير على نظام التشغيل Linux ؟

@ sks4903440 باستخدام الإصدار 3.2.5 ، يمكنك محاولة تشغيل البرنامج النصي التالي في سطر الأوامر:

test.py

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

$ python test.py

يجب ان تحصل على:

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

ثابت في # 1945

هممم .. إن توريث io.BufferedReader إلى StreamCorpusReader هو حل مثير للاهتمام ولكن ربما يكون إغلاق الملف بشكل صحيح مع مديري السياق with قد يكون حلًا أفضل.

وأعتقد أن Python3.6 لديها بعض المتطلبات الخاصة للملفات التي تختلف عن الإصدارات السابقة. علينا قراءة سجل التغيير من CPython للتأكد من أن ما نقوم به ليس مجرد عصابة =)

alvations استخدام with سيكون بالتأكيد فكرة جيدة. سأحاول دمج ذلك. نظرًا لأنه في CPython ، يقوم جامع القمامة تلقائيًا بإغلاق الملف بعد عدم احتساب أي مرجع ، لم أستخدم ذلك. أيضًا لكي تعمل عبارة with ، سيتعين علينا استخدام io.BufferedReader أو تنفيذ طرق __enter__ و __exit__ . ماذا تعتقده بأنه الأفضل؟

~ أعتقد أننا لسنا مضطرين إلى تنفيذ طرق الإدخال / الخروج لأننا لن نرث من BufferedReader ولكننا نستخدم السياق للفتح والإغلاق ثم نترك وحدة io تتعامل مع gc (جمع القمامة ). ~

هذا أمر صعب ، حيث أن io.BufferedReader يحتوي بالفعل على وظيفة seek() مثل ، وعندما يرث SeekableUnicodeStreamReader من ذلك دون القيام بأي عمل ممتاز __init__() ، لست متأكدًا تمامًا ما الذي تأخذه من BufferedReader.

وفي الواقع ، لا يمكننا بالفعل تغليف with داخل read() لأن ذلك سيمنع البحث عن الوظائف وإخبارها عن العمل إلا إذا اخترقنا المخزن المؤقت ضمن سياق with . حسنًا ...

أي أخبار عن هذا؟ لا يزال Python 3.6 يشكو من NLTK 3.3 ، على كل مورد تقريبًا:

/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'>

الإصلاح المقترح: https://github.com/nltk/nltk/pull/2165

هناك مشكلة أخرى يبدو أنها قد اكتملت ، فقد يكون من الجيد إغلاق المشكلة.

شكرًا للجميع على إثارة المشكلة و purificant للإصلاح !

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات