Bug in argument parsing for %run #592

jstenar opened this Issue Jul 18, 2011 · 4 comments


None yet

3 participants

jstenar commented Jul 18, 2011

Excerpt from discussion on ipython-dev:

This problem is with master 9e2a3f4, calling %run with parameters that have quotation marks keep the marks in sys.argv.


import sys

In [2]: %run runbug.py "hello world"
[u'runbug.py', u'"hello world"']

This is unique to Windows, somehow.

As far as I can tell it is due to shlex that is called from arg_split. When on posix shlex is called with posix=True which removes the quotation marks, but on windows we get posix=False which keeps them. If we call shlex with posix=True on windows we get messed up handling of \ in paths since posix means \ is used for escaping.

Perhaps one solution could be to strip " from elements returned by arg_split when they are present in both ends, any other ideas?

It is really annoying to not be able to use " from run, unfortunately there are often spaces in windows paths.


jstenar commented Jul 18, 2011

In my arg_parse branch I have a first stab at a fix. I will try to use this myself for a while to see if any unforseen issues come up. Then I'll write some tests.


fperez commented Nov 28, 2011

@jstenar, has this been fixed? I'd like to close it if so. If not, do you have your branch around with the fixes, so we can merge it? Thanks!

jstenar commented Nov 28, 2011

I do not remember when, but a simple fix for this has gone in already. However quoting only works on the first argument to %run and not for arbitrary arguments.

Running a script that prints argv:

In [1]: %run "space test.py" "testing quoted arguments"
['space test.py', '"testing quoted arguments"']
@jstenar jstenar referenced this issue Nov 28, 2011

Win32 shlex #1064


Closed by PR #1064.

@takluyver takluyver closed this Nov 30, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment