Repository navigation
Please add argument to override stdin/out/err in the input builtin #75784
Description
Activity
I would really love to add a few params to input so that it's signature looked more like so:
def input(prompt, /, *, fin=sys.stdin, fout=sys.stdout, ferr=sys.stderr): ...
This would certainly make overriding the the files in specific calls to input easier. A reasonable use case is collecting a piece over /dev/tty explicitly so that a redirected stdin could be used to pipe data into a program while overriding using /dev/tty to collect some piece of data. Here's some code illustrating what I'd like:
import sys sys.stdin.close() sys.stdin = open('/dev/null', 'r') with open('/dev/tty', 'r') as f: x = input('Name? ', fin=f) print(x)
FWIW, I have actually already implemented this fully (including tests). I am just trying to see what I need to do to allow release since I am work on my employer's time.
In the interest of getting feedback, does the signature provided above look sane?
This might also allow simplification of the getpass.unix_getpass() logic. I am not 100% sure about that yet though.
This is probably a topic for the python-ideas mailing list. For example, rather than complicating input, it might be better to propose adding a redirect_stdin to contextlib to parallel the two existing redirect context managers. I don't remember why that was not added when the others were, but there was probably a reason, so a discussion about what the best solution is for the use case is in order, and python-ideas is the place for that.
Reacted by Bartosz Sławeckiinput() is a convenient function for simple user interaction. If you need to read a data from different file object just use its readline() method.
Added a PR to facilitate discussion on python-ideas.
For reference, here's the link to the Python ideas thread:
https://mail.python.org/pipermail/python-ideas/2017-September/047230.html
The discussion on python-ideas has some unresolved questions. Wren, did you get a definitive answer on this idea?
See also bpo-1927.
I'm not sure that I ever got a definitive issue, but I didn't have time to
push it forward. I still think the idea has merit. I'd love to see it
implemented, but I don't have the time to pursue it right now.Thanks,
wtOn Mon, Jan 17, 2022 at 10:23 AM Irit Katriel <report@bugs.python.org>
wrote:Irit Katriel <iritkatriel@gmail.com> added the comment:
See also bpo-1927.
----------
nosy: +iritkatriel
Python tracker <report@bugs.python.org>
<https://bugs.python.org/issue31603\>
[...] I don't have the time to pursue it right now.
Thanks, wt
Thank you.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: