Spyder inserts a blank line in the console output between every call of the input()
function but I don't want that (i.e. I want the input()
prompts to be on contiguous lines in the console instead of separated by a blank line). Is there a way to do that? I tried using input("foo", end="")
thinking it may work like the print()
function but that's not the case...
Code:
fname = input("Please enter your first name: ")
lname = input("Please enter your last name: ")
print("Pleased to meet you, " + str(fname) + " " + str(lname) + "!")
Output:
Please enter your first name: Jane
Please enter your last name: Doe
Pleased to meet you, Jane Doe!
Desired output:
Please enter your first name: Jane
Please enter your last name: Doe
Pleased to meet you, Jane Doe!
Edit:
As others have pointed out in the comments section, this issue is non-reproducible, even for me, except through the use of the IPython interface within the Spyder IDE. If anyone is running IPython outside of Spyder, please run the above code and let me know whether that produces the same output. I can reproduce the undesired output through Spyder's IPython interface but not through a Terminal session so this is something specific to either IPython or Spyder.
(Spyder developer here) This looks like a minor bug in our IPython console. Please report it here:
https://github.com/jupyter/qtconsole
Note: This console is not simply embedding a terminal IPython session in Spyder (that's why making comparisons to it make no sense at all).
Instead, it is a re-implementation of most of the terminal behavior but using a graphical toolkit (called Qt) and the Jupyter kernel/frontend architecture.
Perhaps not exactly what you're after, but it should solve your problem.
Delete previous line in console with:
def delete_previous_line():
CURSOR_UP_ONE = '\x1b[1A'
ERASE_LINE = '\x1b[2K'
print(CURSOR_UP_ONE + ERASE_LINE + CURSOR_UP_ONE)
fname = input("Please enter your first name: ")
delete_previous_line()
lname = input("Please enter your last name: ")
print("Pleased to meet you, " + str(fname) + " " + str(lname) + "!")
See remote last STDOUT.
If it doesn't work try
print(CURSOR_UP_ONE + ERASE_LINE)
instead of
print(CURSOR_UP_ONE + ERASE_LINE + CURSOR_UP_ONE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With