-
-
Notifications
You must be signed in to change notification settings - Fork 31.9k
Please add argument to override stdin/out/err in the input builtin #75784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
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. |
input() 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 Thanks, On Mon, Jan 17, 2022 at 10:23 AM Irit Katriel <report@bugs.python.org>
|
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:
The text was updated successfully, but these errors were encountered: