New submission from Josh Rosenberg:

Accidentally discovered this while running code that processes a whole bunch of 
files, when it turned out the files were empty. The readline method of 
fileinput.input will make a recursive call to continue processing when it 
reaches the end of a file. This is fine when files aren't empty, but if you 
have sufficient (~1000) empty files being processed, this causes recursion 
errors.

Simple example:

>>> for i in range(10000):
...     with open('test{}'.format(i), 'wb'):
...         pass
...
>>> import fileinput, glob
>>> ''.join(fileinput.input(glob.glob('./test*')))
Traceback ...
... (almost all the levels are showing the self.readline() call at the end of 
readline) ...
RecursionError: maximum recursion depth exceeded

Admittedly a niche case, but a relatively simple switch from recursion to 
iteration would solve it. Same problem appears in all versions of Python.

----------
components: Library (Lib)
messages: 275072
nosy: josh.r
priority: normal
severity: normal
status: open
title: fileinput causes RecursionErrors when dealing with large numbers of 
empty files
versions: Python 2.7, Python 3.5, Python 3.6, Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue28024>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to