[Python-de] Python3.3 - Unittest - Warnung
Diez B. Roggisch
deets at web.de
Mo Nov 11 19:54:59 CET 2013
> import unittest
>
> class TestMorphologyFunctions(unittest.TestCase):
>
> def test_save_most_seen_prefix_suffix_for_tokens(self):
>
> file_content = open('temp_test.txt').read()
>
> self.assertTrue(not not not not True)
>
> unittest.main()
>
>
> Leider (?) bekomme ich folgende Warnung nach der Ausführung:
>
> test.py:7: ResourceWarning: unclosed file <_io.TextIOWrapper name='temp_test.txt' mode='r' encoding='UTF-8'>
> file_content = open('temp_test.txt').read()
>
> Weiß jemand zufällig, wieso diese Warnung nur erscheint, wenn ich diese Codezeile im Unittest drinnen habe?
http://docs.python.org/dev/whatsnew/3.2.html
Mal nach ResourceWarning gucken. Kannte ich auch noch nicht, coole idee.
>
> "Umgehen" kann ich das ganze ja mit:
>
> f = open('temp_test.txt')
> content = f.read()
> ...
> f.close()
>
> oder gibt es da noch eine andere Möglichkeit? Ich benutze Python3.3 (die, welche gerade bei Arch zur Verfügung steht ;) )
Seit Python2.5 macht man das mittels des with-statements:
with open(…) as inf:
content = inf.read()
Ein weiteres Stichwort ist dazu "contextmanager", und im Grunde geht es darum, resourcen innerhalb eines bestimmten scopes (also Codabschnitts) sicher zu allokieren und zu deallokieren - was auch immer das im einzelnen heisst. Funtktioniert zB auch bei Locks.
Diez
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://mail.python.org/pipermail/python-de/attachments/20131111/88d55def/attachment.html>
Mehr Informationen über die Mailingliste python-de