[IPython-user] More Windows questions part 2 - \/ characters revisited
Fernando Perez
Fernando.Perez at colorado.edu
Fri Aug 12 08:30:08 CDT 2005
Ville Vainio wrote:
> A little blast from the past:
>
> On 6/22/05, Jerry McRae <qrs0xyc02 at sneakemail.com> wrote:
>
>
>>#3. And while I agree \ as an escape character is necessary, IPython is
>>a command interpreter. I think IPython should be reading raw strings
>>as its commands. I know I will have to live with using \ when
>
>
> There was a disagreement about this a while ago, but there is a
> compromise that should at least be considered: when prefixed with !,
> ipython should definitely escape the backslashes when converting the
> command:
>
> [C:\]|12> !dir c:\
> --------------------------------------------------------
> File "<console>", line 1
> __IP.system("dir c:\")
> ^
> SyntaxError: EOL while scanning single-quoted string
>
> Or perhaps more correctly convert it to __IP.system(r"dir c:\")
> (i.e. raw string)
Mmh. I actually think I disagree, and rather that you discovered a bug. In
Python, a trailing backslash is used to indicate line continuations:
In [1]: 5+\
...: 3
Out[1]: 8
But magics and ! short-circuit this mechanism and try to evaluate immediately:
In [2]: cd \
------------------------------------------------------------
File "<console>", line 1
ipmagic("cd \")
^
SyntaxError: EOL while scanning single-quoted string
hence the error. I would argue that what's broken is that line-continuations
are not being honored by magics/! as they should, which is inconsistent with
the rest of python and the behavior of normal shells.
So I think the right fix would be to change !/% to honor line continuation
marks like the rest of the language, so that you could input
In[1]: !my very long command with\
...: a lot of arguments\
...: and still more
And get proper execution.
Opinions?
f
More information about the IPython-user
mailing list