On Fri, Dec 28, 2018 at 12:58:00AM -0500, Avi Gross wrote: [...] > Copying and pasting multiple lines into the interpreter fails in mysterious > ways, unless they are a logical single entity. > > Is there a way to change this behavior, or perhaps an editor/environment > that feeds multiple lines more carefully to the interpreter?
Which interpreter are you using? If it is the regular Python REPL (Read Eval Print Loop), then pasting multiple lines should work, with some limitations. For example, I can paste: x = 5 y = 6 as two lines, and it works fine under Linux. I see no reason why it should be different under Windows. If you just run "python" in the Windows shell (cmd.exe or whatever its called), you should get an interactive interpreter. What happens when you paste multiple lines in that? [...] > When copied in looks like this: > > >>> X=5 > > Y=6 > > SyntaxError: multiple statements found while compiling a single statement That looks like a bug. Are you using IDLE? Perhaps it has been fixed in newer versions of Python, and if not, you should report it as a bug on the bugtracker https://bugs.python.org/ but: (1) try searching for similar bug reports first; (2) read this first: http://www.sscce.org/ (3) and do try to keep your bug report short and to the point. It looks like others have this problem with IDLE too: https://duckduckgo.com/?q=idle+paste+multiple+lines IPython/Jupyter allows pasting of multiple lines; I expect that bpython will too. https://ipython.org/ https://bpython-interpreter.org/ But as I said, the vanilla Python REPL ought to work. How are you starting the interpreter? My guess is that you're using IDLE. [...] > Python has an eval() and an exec() and I would assume the latter would be a > way to see what works. No, exec() executes Python code, it doesn't try to simulate a REPL. > Here are three lines using \n: > > >>> exec("x=6\ny=7\nprint(x+y)") > 13 > > > That seems to work. Again, if I copied and pasted the same as three lines, > it fails. Without knowing the system you are using, and how you copy and paste, it is hard to comment except to say "Works for me". Here are three lines: x = 6 y = 7 print(x + y) If I select those three lines with the mouse, copy, then paste into a standard Python interactive interpreter, I get this: py> x = 6 py> y = 7 py> print(x + y) 13 exactly as expected. But if I do it in IDLE, I get this: >>> x = 6 y = 7 print(x + y) SyntaxError: multiple statements found while compiling a single statement >>> That *really* sounds like a bug to me. But perhaps I just don't understand IDLE. -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor