Nltk: File tidak tertutup di stopwords corpora

Dibuat pada 3 Jan 2018  ·  11Komentar  ·  Sumber: nltk/nltk

/Users/kiddo/anaconda/lib/python3.6/site-packages/nltk/corpus/reader/wordlist.py:28: ResourceWarning: file tidak tertutup <_io.bufferedreader i = "4">
return concat ([self.open (f) .read () untuk f dalam fileids])

Itu peringatan yang saya temukan pada mode debugging. Saya pikir mungkin Anda ingin memperbaikinya sebelum rilis berikutnya.

bug corpus enhancement goodfirstbug pythonic

Komentar yang paling membantu

Ada berita tentang ini? Python 3.6 masih mengeluh tentang NLTK 3.3, pada hampir semua sumber daya:

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

Semua 11 komentar

Hai, bolehkah saya mengatasi masalah ini?

@iliaschalkidis @alvations Bagaimana cara mereproduksi peringatan di linux?

@ sks4903440 Menggunakan versi 3.2.5, Anda dapat mencoba menjalankan skrip berikut pada baris perintah Anda:

test.py

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

$ python test.py

Anda harus mendapatkan:

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

Diperbaiki di # 1945

Hmmm .. Mewarisi io.BufferedReader ke StreamCorpusReader adalah solusi yang menarik tetapi mungkin menutup file dengan benar dengan manajer konteks with scope mungkin merupakan perbaikan yang lebih baik.

Dan menurut saya Python3.6 memiliki beberapa persyaratan khusus untuk file yang berbeda dari versi sebelumnya. Kita harus membaca log perubahan dari CPython untuk memastikan apa yang kita lakukan bukan hanya bandaid =)

@alvations Menggunakan with pasti merupakan ide yang bagus. Saya akan mencoba memasukkan itu. Karena di CPython, pengumpul sampah secara otomatis menutup file setelah jumlah referensi nol, saya tidak menggunakannya. Juga agar pernyataan with berfungsi, kita harus menggunakan io.BufferedReader atau menerapkan metode __enter__ dan __exit__ . Menurut Anda apa yang lebih baik?

~ Saya pikir kita tidak perlu menerapkan metode masuk / keluar karena kita tidak akan mewarisi dari BufferedReader tetapi menggunakan konteks untuk membuka dan menutup dan kemudian membiarkan menangani modul io menangani gc (pengumpulan sampah ). ~

Ini rumit, io.BufferedReader sudah memiliki fungsi suka seek() dan ketika SeekableUnicodeStreamReader mewarisi darinya tanpa melakukan super __init__() , saya tidak begitu yakin apa yang diambil dari BufferedReader.

Dan sebenarnya, kita tidak bisa benar-benar membungkus with di dalam read() karena itu akan mencegah fungsi mencari dan memberitahu dari pekerjaan kecuali kita meretas buffer dalam konteks with . Hmm ...

Ada berita tentang ini? Python 3.6 masih mengeluh tentang NLTK 3.3, pada hampir semua sumber daya:

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

Perbaikan yang diusulkan: https://github.com/nltk/nltk/pull/2165

Masalah lain yang tampaknya telah diselesaikan, mungkin ada baiknya untuk menutup masalah tersebut.

Terima kasih semuanya telah mengangkat masalah ini dan @purificant atas perbaikannya!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jeryini picture jeryini  ·  5Komentar

stevenbird picture stevenbird  ·  3Komentar

Chris00 picture Chris00  ·  3Komentar

alvations picture alvations  ·  4Komentar

alvations picture alvations  ·  3Komentar