[ python-Bugs-1724822 ] shlex.split problems on Windows

SourceForge.net noreply at sourceforge.net
Thu May 24 17:17:48 CEST 2007


Bugs item #1724822, was opened at 2007-05-24 14:56
Message generated for change (Comment added) made by gjb1002
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1724822&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Windows
Group: Python 2.5
Status: Closed
Resolution: Invalid
Priority: 5
Private: No
Submitted By: Geoffrey Bache (gjb1002)
Assigned to: Nobody/Anonymous (nobody)
Summary: shlex.split problems on Windows

Initial Comment:
What is shlex.split supposed to do on Windows? It seems to be present but it can't handle basic Windows pathnames : shlex.split("C:\\directory\\file") returns C:directoryfile (whereas os.system happily accepts the same string).

Also, it runs in POSIX mode and there is no way to override it! Why isn't POSIX mode the default on POSIX systems and not on non-POSIX systems? Or for it to at least be possible to says shlex.split(s, posix=False)?


----------------------------------------------------------------------

>Comment By: Geoffrey Bache (gjb1002)
Date: 2007-05-24 17:17

Message:
Logged In: YES 
user_id=769182
Originator: YES

OK, but surely providing the possibility to override the POSIX flag isn't
difficult. That doesn't require any change in default behaviour. 

It also seems it should be possible to request enhancements without having
to do the work myself. Can we agree that parsing Windows command lines is a
generally useful thing to do? We already have a module that can parse UNIX
command lines which isn't unrelated. Perhaps this should be changed to
"enhancement" rather than "invalid". 

Whether or not the original author of shlex cared about Windows seems to
be beside the point.

----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2007-05-24 16:59

Message:
Logged In: YES 
user_id=849994
Originator: NO

The fact remains that shlex is not meant to switch modes automatically
depending on the platform.

If you want to contribute a third mode that completely resembles
Windows-style parsing,
you're most welcome, just submit a patch and I'll look at it.

----------------------------------------------------------------------

Comment By: Geoffrey Bache (gjb1002)
Date: 2007-05-24 16:52

Message:
Logged In: YES 
user_id=769182
Originator: YES

But surely it's not named "POSIX mode" for no reason. It's because those
rules resemble those of the UNIX shell. While "non-POSIX mode" resemble
those of non-POSIX shells, such as DOS.

shlex.split seemed to be a shortcut for those wanting to simply parse a
generic quoted string who weren't interested in creating a minilanguage.
Surely it should be possible to avoid POSIX rules when doing this on
Windows?

You haven't suggested any other way to do this. The fact is, I do want to
parse a Windows command line. The only way I have found is by copying
shlex.split and hacking it. Didn't seem very nice, especially it seems a
fix would be totally trivial, but it's obviously better than starting from
scratch.

----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2007-05-24 16:26

Message:
Logged In: YES 
user_id=849994
Originator: NO

Further quote: "This will often be useful for writing minilanguages, (for
example, in run control files for Python applications) or for parsing
quoted strings."

Why shouldn't that feature not be available under Windows?
Again, shlex is *not supposed* to handle Windows command lines.

Also, http://docs.python.org/lib/shlex-parsing-rules.html clearly says
what the difference between
"posix=True" and "posix=False" is.

That non-posix mode works on Windows filenames is because it does not
handle backslash escapes.

----------------------------------------------------------------------

Comment By: Geoffrey Bache (gjb1002)
Date: 2007-05-24 16:19

Message:
Logged In: YES 
user_id=769182
Originator: YES

Then what is "non-POSIX mode" if it's only supposed to work on UNIX?

I noted the initial comment but it seemed to be out of date. Especially as
it
seems to work fine to copy shlex.split and correct the default value for
"posix".
Seemed a very simple change that had little chance of being wrong.

If Windows behaviour is really unsupported then surely the function should
not
be available there.


----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2007-05-24 15:09

Message:
Logged In: YES 
user_id=849994
Originator: NO

The docs to shlex say: "The shlex class makes it easy to write lexical
analyzers for simple syntaxes resembling that of the Unix shell."

It is not meant to be a cross-platform shell quoting handler, but an
implementation of Unix shell behavior.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1724822&group_id=5470


More information about the Python-bugs-list mailing list